2017-04-04 57 views
-4

我已经写了一个学校作业的程序。该程序将3个正整数作为标准输入的参数,如果三角形是等边,等腰或斜角,则打印。 Here是代码。其他语句正在执行的地方它不应该

该程序到目前为止,但我没有打算。该行25

System.out.println("Triangle sides should be positive integer "); 

应该只有当负的整数被给出时才被执行。但是,除了整数以外的类型时,它正在执行。例如,当我馈送线的文本文件“DFD 5 4 6”,则提示:

第5行 - DFD:三角形的侧应为整数 三角形边应是正整数

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

+1

请直接发布您的代码中的问题,而不是作为一个外部链接。此外,你是否已通过打印出或在调试器中查看你的'a','b'和'c'实际上都是正数来进行视觉验证? –

+0

为什么不创建'else if(a <0 || b <0 || c <0){//打印数字应该是正值}?然后'else {//做些什么}'为那些不是数字的。 –

+1

这可能会发生,因为你的'int []'数组最初将初始化为零。现在,如果您读取的是非整数,则数组将保持为零,并使用零创建三角形。 – JDC

回答

0

for循环的执行后,new Triangle(a[0],a[1],a[2]);将被执行并且仅当lineText没有下一行的行103中的块else将被执行。

为了避免这种使用布尔变量,并将其设置在真正的线94 else块现在把if条件线99

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 
} 
+0

谢谢soooo多!这是工作 !!!!! – Azik

0

我认为正面的功能应该是像下面那样。

boolean isPositive (int a, int b, int c){ 
    if ((a<0)||(b<0)||(c<0)){ 
     return false; 
    } 
    return true; 
} 
+0

好吧,但是零的三角形边也不是真的有效,即使它不是负面的。 (尽管我认为如果一个值为零,它将会影响不平等检查。)这不是问题所在。 –

+0

我试过但结果相同。但是,谢谢你的建议。 – Azik

0

“我写了主要功能行94和105中的浮点数和字符串的else语句。”

是的,但是您所做的只是打印一条错误消息,它实际上不会使用户输入有效数字。如果他们输入65.8,则会打印一条消息,然后继续尝试制作缺少一面的三角形。这显然不是你想要的。

也许你应该将每个输入请求放在一个while循环中,检查有效输入并立即让用户在没有输入有效整数的情况下重新输入。