3 回答
TA贡献1886条经验 获得超2个赞
很多人都提到了您的问题,但我会尽力改进您的代码块。
你的问题是块:
a = input1.charAt(0);
b = input1.charAt(1);
d = input1.charAt(3);
e = input1.charAt(4);
假设您的输入是“1234”,以下数组将存在
array["1","2","3","4] java 和大多数语言中的数组从 0 开始。所以你的可用位置是 0、1、2 和 3。当 input1.charAt(4); 运行它失败。
额外的建议
但是让我们试着让你的所有代码稍微好一点。
首先,假设这是您的所有代码行
number = Integer.parseInt(input1);
没用,因为你永远不需要这个值,让我们把它扔掉。如果您保留它,您将需要一个 try...catch 块,以防 input1 不是数字,“abcde”将在此处使您的应用程序崩溃。
接下来检查长度的块可以简化,应该在您尝试阅读任何内容之前出现。
if (number2 >= 6) {
JOptionPane.showMessageDialog(null, "Not a 5 digit number");
}
if (number2 <= 4) {
JOptionPane.showMessageDialog(null, "Not a 5 digit number");
}
可以做成单个 if 加上 || (Or) 语句,或者甚至比 != (NOT) 语句更好,而不是检查它是否小于 4 或大于 6,而是检查它是否不是 5。
if (number2 != 5) {
JOptionPane.showMessageDialog(null, "Not a 5 digit number");
}
你有一些更好的代码,不应该失败!
String input1;
int number2, a, b, d, e;
input1 = JOptionPane.showInputDialog("Enter 5 digit number");
number2 = input1.length();
if (number2 != 5) {
JOptionPane.showMessageDialog(null, "Not a 5 digit number");
return; //Dont do anything else, or you will get errors.
}
//There are better ways to do this, but this should work.
a = input1.charAt(0);
b = input1.charAt(1);
d = input1.charAt(3);
e = input1.charAt(4);
if ((a == e) && (b == d)) {
JOptionPane.showMessageDialog(null, "Palindrome");
} else {
JOptionPane.showMessageDialog(null, "Not a palindrome");
}
抱歉冗长,但我希望它有所帮助。
TA贡献1757条经验 获得超7个赞
但问题是,每当我输入一个小于 5 位的整数时,程序就会崩溃。
它崩溃是因为您无法使用 访问数组元素index > array.length - 1,例如,如果您的数组长度小于5ie,4则您index应该从 开始,index=0 to index=3但是在您的情况下,当您输入4长度数字时,您的索引范围应从0 到3。但是以下将失败,因为您试图访问index = 4超出数组索引范围的内容。
e = input1.charAt(4); //
编辑,相反,您可以将其简化如下
String input1;
int number2,;
input1 = JOptionPane.showInputDialog("Enter 5 digit number");
number2 = input1.length();
if(number2 == 5) {
if(input1.substring(0,2).equals(input1.substring(4,5)+input1.substring(3,4)))
JOptionPane.showMessageDialog(null, "Palindrome");
JOptionPane.showMessageDialog(null, "Not a palindrome");
}
JOptionPane.showMessageDialog(null, "Not a 5 digit number");
添加回答
举报