[英]Why does the first line throw NullPointerException but second does not?
[英]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.