java吧 关注:1,264,924贴子:12,766,746
  • 6回复贴,共1

大一新生刚学java 有个题目不太会求大神指导

只看楼主收藏回复

输入:从键盘输入一个18位的身份证号码保存到字符数组Card中。
验证18 位身份证号码并判断身份证主人的性别,身份证号码的规则为:
1、前17 位全部由数字组成,最后一位为数字或者字符’X’,一个字符ch 为数字的条件为:ch>=’0’&& ch<=’9’;
2、第17 位数为奇数表示性别为男,偶数表示性别为女。
输出:主人性别


1楼2017-01-01 14:05回复
    性别判断数组怎么用 char啊


    2楼2017-01-01 14:06
    回复
      2025-06-18 01:11:30
      广告
      求源代码


      3楼2017-01-01 14:07
      回复
        转化为int 后%2


        IP属地:广东来自Android客户端4楼2017-01-01 14:20
        回复
          不知道你们需要用什么知识来求解,我给你写最基础的算法来解决吧。
          自己缩进吧。
          import java.util.Scanner;
          public class Test {
          public static void main(String[] args) {
          char[]card=new char[18];
          Scanner input=new Scanner(System.in);
          System.out.println("请输入一个18位身份证号码:");
          String s=input.next();
          if(s.length()!=18){
          System.err.println("输入错误:要求输入的身份证号码为18位");
          return;
          }
          for(int i=0;i<card.length;i++){
          card[i]=s.charAt(i);
          if(i==18){
          if((card[i]<='9'&&card[i]>='0')||card[i]=='x'){
          System.out.println("身份证号码输入无误!");
          }
          }else if(card[i]>'9'||card[i]<'0'){
          System.err.println("身份证号码输入有误!");
          return;
          }
          }
          //第一种方法:直接用字符的1,3,5,7,9.代表奇数,剩下的0,2,4,6,8代表偶数。
          switch(card[17]){
          case 1:
          case 3:
          case 5:
          case 7:
          case 9:
          System.out.println("主人性别为:男");
          break;
          default:
          System.out.println("主人性别为:女");
          }
          //第二种方法:把字符类型自动转换成int类型,进行奇数偶数的判断。
          //字符'0'到'9',对于的数字是48到57,奇数偶数关系是一致的。直接判断就可以了
          if(card[17]%2==0){
          System.out.println("主人性别为:女");
          }else{
          System.out.println("主人性别为:男");
          }
          }
          }


          IP属地:湖南6楼2017-01-01 17:01
          收起回复
            其实要写身份证用到正则 很复杂的。如果只是说随便写一下实现你这个功能还是很简单


            IP属地:北京来自Android客户端7楼2017-01-02 14:27
            回复