繁体   English   中英

当第一个if语句为真时,为什么代码执行第二行?

[英]Why does the code execute the second line when the first if statement is true?

import java.util.Scanner;
public class FantahunKeburAlmostIsoscelesRightTriangle{
public static void main (String []args){

    Scanner s = new Scanner(System.in);

    System.out.println("Enter the longest side: ");
    double longest = s.nextDouble();
    System.out.println("Enter 2nd side: ");
    double second = s.nextDouble();
    System.out.println("Enter 3rd side: ");
    double third = s.nextDouble();

    double longsq = longest*longest;
    double secondsq = second*second;
    double thirdsq = third*third;
    double secthirdsq = secondsq*thirdsq;

    if  (secthirdsq==longsq)
 {
    System.out.println("This triangle is an almost-Isosceles right triangle. ");

    }

    else if (secthirdsq!=longsq)

    {
    System.out.println("This triangle is not a right triangle. ");


}}

这是我得到的错误>> .java:31:错误:'else'没有'if'else if(secthirdsq!= longsq); ^ 1错误

我需要它在if之后打印第一个语句if if not after after if if

编辑:我更改了它,现在即使第一个if语句为真,我也无法打印第一个打印行

你的if语句末尾有一个半冒号。 该半冒号结束if语句,下一个代码块被视为一个块,无论如何都会被执行。

您需要在if语句的末尾删除所有半冒号:

if  (secthirdsq==longsq)
{
...
}
else if (secthirdsq!=longsq)
{
...

您的代码看起来也会受到浮点计算不准确的影响,请尝试比较:

if (Math.abs(secthirdsq-longsq) < 0.001))

或者只使用整数(如int)。 另外,你可能只想要一个else而不是其他,如果你正在比较前面的if比较的相反。

if语句后面有分号( ; )。 这不起作用。

它基本上是说条件是真的,什么都不做。 然后它执行{}的代码。 (Java允许这样的随机{} )。

要更正您的代码:

import java.util.Scanner;
public class FantahunKeburAlmostIsoscelesRightTriangle{
public static void main (String []args){

        Scanner s = new Scanner(System.in);

        System.out.println("Enter the longest side: ");
        double longest = s.nextDouble();
        System.out.println("Enter 2nd side: ");
        double second = s.nextDouble();
        System.out.println("Enter 3rd side: ");
        double third = s.nextDouble();

        double longsq = longest*longest;
        double secondsq = second*second;
        double thirdsq = third*third;
        double secthirdsq = secondsq*thirdsq;

        if  (secthirdsq==longsq) {
            System.out.println("This triangle is an almost-Isosceles right triangle. ");

        }

        else if (secthirdsq!=longsq) {
            System.out.println("This triangle is not a right triangle. ");
        }

    }
}

作为旁注,我建议(尽管这是个人偏好),你将{ s for if语句放在同一行。 它会使这样的错误更加明显 - if (condition); { if (condition); {乍一看看起来不对劲。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM