迫不得已来这打扰各位修个简单bug,这里是想这里出问题的是第二个功能判断是否来自广州地区,但是测试之后发现不管输入什么,输出的都是不来自广州地区

package 身份证;

import java.util.Scanner;

public class sfz {

public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    int[]numArray={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    System.out.println("请输入身份证号:");
    String card=input.next();
     while(true){
            System.out.println("再输一次确认:");
                card=input.next();
            if(card.length()!=18){
               System.out.println("这是不正确的身份证号");
                System.out.println("是否继续(Y/N 区分大小写)");
                String YN=input.next();
            if(YN.equals("Y")){
                 System.out.println("谢谢使用");
                continue;
            }
            if(YN.equals("N")){
                 System.out.println("再见");
                   break;
            }
           else{
                System.out.println("这是不正确的身份证号");
            }
           } else{
              try {    System.out.println("这是正确的身份证号");
           
             }
              catch(Exception e) {
            }
              
        }
            String card1= card.substring(0,3); 
           char a[] = card1.toCharArray();
         
       
        String gz = "4401";
        if (card1 == gz)     
        {
            System.out.println("您来自广州地区");
        }
        else 
        {
            System.out.println("您不是来自广州地区");
        }
        String card2 = card.substring(16,17);
        char a1[] = card2.toCharArray();
        int r = Integer.parseInt(card2);
        if (r % 2 ==0) {
            System.out.println("这是一位女士的身份证号");
        }else {
            System.out.println("这是一位男士的身份证号");
        }
        break;
            }

}

}

card1 == gz
改为
card1.equals(gz)

上面都有用到equals()方法,为什么这块不知道用了。

字符串比较用equals方法。


package test;

import java.util.Scanner;

public class sfz {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] numArray = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
        System.out.println("请输入身份证号:");
        String card = input.next();
        while (true) {
            System.out.println("再输一次确认:");
            card = input.next();
            if (card.length() != 18) {
                System.out.println("这是不正确的身份证号");
                System.out.println("是否继续(Y/N 区分大小写)");
                String YN = input.next();
                if (YN.equals("Y")) {
                    System.out.println("谢谢使用");
                    continue;
                }
                if (YN.equals("N")) {
                    System.out.println("再见");
                    break;
                } else {
                    System.out.println("这是不正确的身份证号");
                }
            } else {
                try {
                    System.out.println("这是正确的身份证号");

                } catch (Exception e) {
                }

            }
            String card1 = card.substring(0, 4);
            System.out.println(card1);
            char a[] = card1.toCharArray();

            String gz = "4401";
            if (card1.contentEquals(gz)) {
                System.out.println("您来自广州地区");
            } else {
                System.out.println("您不是来自广州地区");
            }
            String card2 = card.substring(16, 17);
            char a1[] = card2.toCharArray();
            int r = Integer.parseInt(card2);
            if (r % 2 == 0) {
                System.out.println("这是一位女士的身份证号");
            } else {
                System.out.println("这是一位男士的身份证号");
            }
            break;
        }

    }
}

两个问题

第一个

例如

String card = "123456789321456987"

String card1= card.substring(0,3);
System.out.println(card1); //输出的值是:123

应该改成:

String card1= card.substring(0,4);
System.out.println(card1); //输出的值是:1234

第二个

==在字符串中是判断对象是否一致

应该改成:

String gz = "4401";

if (card1.equals(gz)){
    System.out.println("您来自广州地区");
}else{
    System.out.println("您不是来自广州地区");
}

这是按照我的意思写的,如果有错误请谅解

改成这样

Scanner input = new Scanner(System.in);
        int[] numArray = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        System.out.println("请输入身份证号:");
        String card = input.next();
        while (true) {
            System.out.println("再输一次确认:");
            card = input.next();
            if (card.length() != 18) {
                System.out.println("这是不正确的身份证号");
                System.out.println("是否继续(Y/N 区分大小写)");
                String YN = input.next();
                if (YN.equals("Y")) {
                    System.out.println("谢谢使用");
                    continue;
                }
                if (YN.equals("N")) {
                    System.out.println("再见");
                    break;
                } else {
                    System.out.println("这是不正确的身份证号");
                }
            } else {
                try {
                    System.out.println("这是正确的身份证号");
                } catch (Exception e) {
                }
            }
            String card1 = card.substring(0, 4);
            char a[] = card1.toCharArray();

            String gz = "4401";
            if (card1.equals(gz)) {
                System.out.println("您来自广州地区");
            } else {
                System.out.println("您不是来自广州地区");
            }
            String card2 = card.substring(16, 17);
            char a1[] = card2.toCharArray();
            int r = Integer.parseInt(card2);
            if (r % 2 == 0) {
                System.out.println("这是一位女士的身份证号");
            } else {
                System.out.println("这是一位男士的身份证号");
            }
            break;
        }