程序不输出小于 5 的数字

我有一个问题要输入一个 5 位整数。程序将输出是否为回文。如果整数不是回文,它将显示“不是回文”。


但问题是,每当我输入一个小于 5 位的整数时,程序就会崩溃。其他一切都很好。当我输入一个超过 5 位的整数时,该程序甚至会输出“不是 5 位数字”。


这是我的代码。


String input1;

int number, number2, a, b, d, e;


input1 = JOptionPane.showInputDialog("Enter 5 digit number");


a = input1.charAt(0);

b = input1.charAt(1);

d = input1.charAt(3);

e = input1.charAt(4);


number2 = input1.length();

number = Integer.parseInt(input1);


if (number2 >= 6) {

    JOptionPane.showMessageDialog(null, "Not a 5 digit number");

}

if (number2 <= 4) {

    JOptionPane.showMessageDialog(null, "Not a 5 digit number");

}


if ((a == e) && (b == d)) {

    JOptionPane.showMessageDialog(null, "Palindrome");

} else {

    JOptionPane.showMessageDialog(null, "Not a palindrome");

}


侃侃无极
浏览 206回答 3
3回答

MM们

很多人都提到了您的问题,但我会尽力改进您的代码块。你的问题是块: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) {&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Not a 5 digit number");}if (number2 <= 4) {&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Not a 5 digit number");}可以做成单个 if 加上 || (Or) 语句,或者甚至比 != (NOT) 语句更好,而不是检查它是否小于 4 或大于 6,而是检查它是否不是 5。if (number2 != 5) {&nbsp; &nbsp; 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) {&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Not a 5 digit number");&nbsp; &nbsp; 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)) {&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Palindrome");} else {&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Not a palindrome");}抱歉冗长,但我希望它有所帮助。

狐的传说

number2 <= 4不会过滤掉 4 位数字。另外,证明你面前的长度e = input1.charAt(4);

长风秋雁

但问题是,每当我输入一个小于 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) {&nbsp; &nbsp; if(input1.substring(0,2).equals(input1.substring(4,5)+input1.substring(3,4)))&nbsp; &nbsp; &nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Palindrome");&nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Not a palindrome");}JOptionPane.showMessageDialog(null, "Not a 5 digit number");&nbsp; &nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java