我写了一个学校作业的程序。该程序将3个正整数作为标准输入的参数,如果三角形为等边,等腰或斜角,则打印。 Here是代码。
该计划目前正在运作,但不是我打算的。第25行
System.out.println("Triangle sides should be positive integer ");
只有在给出负整数时才应该执行。但是当给出除整数之外的类型时它正被执行。例如,当我用“dfd 5 4 6”行输入文本文件时,它会提示:
第5行 - dfd:三角形的边应为整数 三角边应为正整数
但它应该只打印第一行。我在主函数行94和105中为浮点数和字符串编写了else语句。但是除了else语句之外它还在执行。我怎么能避免呢?
答案 0 :(得分:1)
执行for
循环后,new Triangle(a[0],a[1],a[2]);
将被执行,第103行的else
块仅在lineText
没有下一行时执行。< / p>
为避免这种情况,请使用布尔变量,并在第94行的else
块处将其设置为true。现在为行99设置if
条件。
boolean areInvalidSides = false;
else { // line 92
areInvalidSides = true;
System.out.printf("Line %d - %s: the side of the triangle should be an integer\n", lineNum, lineText.next());
}
if(!areInvalidSides){
new Triangle(a[0],a[1],a[2]); // line 99
}
答案 1 :(得分:0)
我认为isPositive函数应该如下所示。
boolean isPositive (int a, int b, int c){
if ((a<0)||(b<0)||(c<0)){
return false;
}
return true;
}
答案 2 :(得分:0)
&#34;我在主要功能行94和105中写了浮点数和字符串的else语句。&#34;
是的,但您所做的只是打印一条错误消息,这实际上不会让用户输入有效数字。如果他们输入65.8,您将打印一条消息,然后继续尝试制作缺少边的三角形。这显然不是你想要的。
也许你应该在while
循环中包含每个输入请求,检查有效输入并立即让用户重新输入,如果他们不输入有效整数。