java - 使用 do-while 和 ArrayList 时遇到问题
问题描述
我的代码有问题,为什么当 ai 启动时它总是给我一个错误?
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;
}
}
}
如果我删除了“do-while”并在“while(无效)”中更改为“if”,但为什么当我从“birth”获取数组列表时,它总是输出0?不是我输入的吗?(必须使用 .equal)
if (input.equals("0")) {
birth.add(input);
break;
}
解决方案
你的错误在这里:
if (input.length() == "0") {
birth.add(input);
}
该方法length()
返回一个 int 并且您正在与一个字符串进行比较。也许你的意思是:
if (!(input.length() == 0)) {
birth.add(input);
}
注意 not 运算符
推荐阅读
- flutter - 如何在颤振中重新启动整个应用程序?
- node.js - 什么是好的通知模型?
- javascript - 将修改后的表发送到 ASP.NET MVC 中的控制器?
- python - 使用 Python 将 2 个视频连接成 1 个视频
- powershell - Fiddler 未在 PowerShell 中捕获某些命令
- c++ - 在函数“lasd::Vector
::~Vector()" 对基类的未定义引用 - javascript - 如何使用 js RegExp 删除空格
- python - 如何将“列表数据库”与 Python 链接?
- php - Laravel 防止控制器功能超时
- html - 如何使用js在css中添加css