程序输出的数字不小于5

时间:2018-09-27 14:44:23

标签: java output palindrome

我有一个问题要输入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");
}

5 个答案:

答案 0 :(得分:0)

number2 <= 4不会过滤掉4位数字。 另外,请在e = input1.charAt(4);

之前证明长度

答案 1 :(得分:0)

您只需要重新排列代码即可。如果input1.charAt(4)

input1.length() < 5可能会失败
input1 = JOptionPane.showInputDialog("Enter 5 digit number");   

number2 = input1.length();
number = Integer.parseInt(input1);

if (number2 >= 6) { 
    JOptionPane.showMessageDialog(null, "Not a 5 digit number"); 
    return;
}
if (number2 <= 4) { 
    JOptionPane.showMessageDialog(null, "Not a 5 digit number"); 
    return;
}

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"); }

答案 2 :(得分:0)

所以程序崩溃的原因是因为您在x位置可能存在或不存在char。因此,如果您输入的长度小于x,则您的代码将引发异常。

您可以通过在a = input1.charAt(0);之前添加支票来解决此问题,例如

 if (input1.length() <5){  
         JOptionPane.showMessageDialog(null, "Not a 5 digit number");  
 }  

答案 3 :(得分:0)

  

但是问题是,每当我输入小于   5位整数。

它崩溃是因为您无法使用index > array.length - 1访问数组元素,例如,如果您的数组长度小于5,即4,那么您的index应该从index=0 to index=3,但是在您的情况下,当您输入长度为4的数字时,索引范围应从03。但是以下操作将失败,因为您正在尝试使用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");   

答案 4 :(得分:0)

您的问题已被很多人陈述,但是我将尝试改善您的代码块。

您的问题所在:

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。运行失败。


多余的食物摄入量


但是让我们尝试使您的所有代码稍有改进。

首先,假设这是您的所有代码行

number = Integer.parseInt(input1);

是没有用的,因为您永远不需要此值,让我们将其丢弃。如果保留它,则在input1不是数字的情况下,您将需要一个try ... catch块,“ abcde”将在此处使您的应用程序崩溃。

接下来可以简化检查长度的块,并且应该在尝试读取任何内容之前出现。

if (number2 >= 6) {
    JOptionPane.showMessageDialog(null, "Not a 5 digit number");
}
if (number2 <= 4) {
    JOptionPane.showMessageDialog(null, "Not a 5 digit number");
}
如果使用||,可以将

制成单个。 (Or)语句,甚至比!=(NOT)语句更好,而不是检查其小于4还是大于6,检查其Not 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");
}

很抱歉,但我希望它能帮上忙。