Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与do while和ArrayList一起出现问题_Java_Arraylist - Fatal编程技术网

Java 与do while和ArrayList一起出现问题

Java 与do while和ArrayList一起出现问题,java,arraylist,Java,Arraylist,我的代码有问题,为什么当我启动一个程序时,它总是向我发送一个错误 Import java.util.*; public class main { ArrayList<String> birth = new ArrayList<String>(); Scanner scn = new Scanner(System.in); public main { String input = "", strDay = &quo

我的代码有问题,为什么当我启动一个程序时,它总是向我发送一个错误

Import java.util.*;
public class main {
    ArrayList<String> birth = new ArrayList<String>();
    Scanner scn = new Scanner(System.in);
    public main {
        String input = "", strDay = "", strMonth = "", strYear = "";
        int day = 0, month = 0, year = 0;
        boolean invalid = true;
        System.out.println("Masukkan tanggal lahir Anda (ddmmyyyy): ");
       
        while (invalid) {
            do {
                input = scn.next();
                
                if (input.length() == "0") {
                    birth.add(input);    
                }

                strDay = input.substring(0, 2);
                strMonth = input.substring(2, 4);
                strYear = input.substring(4, 8);
                    
                day = Integer.parseInt(strDay);
                month = Integer.parseInt(strMonth);
                year = Integer.parseInt(strYear);

                if ((month == 1 && day > 31) || (month == 3 && day > 31) || (month == 5 && day > 31) || (month == 7 && day > 31) || (month == 8 && day > 31) || (month == 10 && day > 31) || (month == 12 && day > 31)) {
                    System.out.println("Hari di bulan " + month + " tidak boleh lebih besar dari " + 31);
                    continue;
                }
                    
                if ((month == 4 && day > 30) || (month == 6 && day > 30) || (month == 9 && day > 30) || (month == 11 && day > 30)) {
                    System.out.println("Hari di bulan " + month + " tidak boleh lebih besar dari " + 30);
                    continue;
                }
                
                if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && day > 29) {
                    System.out.println("Hari di bulan " + month + " tahun kabisat tidak boleh lebih besar dari " + 29);
                    continue;
                }
                    
                if (month > 12) {
                    System.out.println("Bulan tidak boleh lebih besar dari " + 13);
                    continue;
                }   

            } while (!input.equals("0"));
            invalid = false;
        }
    }
}
您的错误如下:

if (input.length() == "0") {
       birth.add(input);    
}
方法
length()。也许你的意思是:

if (!(input.length() == 0)) {
        birth.add(input);    
}

请注意非操作员

欢迎使用SO。请阅读并添加更多示例,说明您提供了哪些输入,您期望发生什么,以及您得到了什么(如果您得到异常,请将整个stacktraces格式化)。除此之外,您是否已经使用调试器逐步完成了代码?最后,还有一些事情是不需要或不受欢迎的,所以:“我的名字是凯文”-谢谢你提供的信息,但没有必要,“你能尽快帮我吗?”-不太可能提高你的胜算,只是去掉这个。)还有一件事:“它总是向我发送一个错误”-如果你描述什么错误以及从哪里得到它,那就好了。对于非英语消息,我们必须猜测什么会被视为“错误”。首先,我希望
input.length()==“0”
编译失败-
String.length()
返回一个整数,而
“0”
是一个字符串……检查可以是
input.length()!=0
input.length()>0
@RobCo是的,可以。但是使用相同的代码更好地指出错误。
if (!(input.length() == 0)) {
        birth.add(input);    
}