其他声明正在执行的地方不应该执行

时间:2017-04-04 04:54:29

标签: java java.util.scanner

我写了一个学校作业的程序。该程序将3个正整数作为标准输入的参数,如果三角形为等边,等腰或斜角,则打印。 Here是代码。

该计划目前正在运作,但不是我打算的。第25行

System.out.println("Triangle sides should be positive integer ");
只有在给出负整数时才应该执行

。但是当给出除整数之外的类型时它正被执行。例如,当我用“dfd 5 4 6”行输入文本文件时,它会提示:

第5行 - dfd:三角形的边应为整数 三角边应为正整数

但它应该只打印第一行。我在主函数行94和105中为浮点数和字符串编写了else语句。但是除了else语句之外它还在执行。我怎么能避免呢?

3 个答案:

答案 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循环中包含每个输入请求,检查有效输入并立即让用户重新输入,如果他们不输入有效整数。