-1

所以我正在做一个分配,我必须在一个显示距离的构造函数中有一个打印方法。根据演示类中的输入内容,我还必须拥有三个单独的 get 方法。我的问题是我正在尝试编写 print 方法以包含基于使用哪个 get 的决策结构。public void prt() { DecimalFormat formatter = new DecimalFormat("#,##0.00");

    System.out.println(
        "The time it takes the sound to travel " + distance +
         " feet through air is " + 

            if (getSpeedInAir() > 0) {
                formatter.format(getSpeedInAir());
            }

            else if (getSpeedInWater() > 0) {
                formatter.format(getSpeedInWater());
            }

            else if (getSpeedInSteel() > 0) {
                formatter.format(getSpeedInSteel());
            }

            else "error";
    ) 
}

尝试编译后出现以下错误。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\GlaDOS\Desktop\JavaStuff>j Speed

C:\Users\GlaDOS\Desktop\JavaStuff>del    *.class

C:\Users\GlaDOS\Desktop\JavaStuff>javac  Speed.java
Speed.java:43: error: illegal start of expression
                                                           " feet through air is
 " + if (getSpeedInAir() > 0)

     ^
Speed.java:43: error: ';' expected
                                                           " feet through air is
 " + if (getSpeedInAir() > 0)

       ^
Speed.java:43: error: not a statement
                                                           " feet through air is
 " + if (getSpeedInAir() > 0)

                         ^
Speed.java:43: error: ';' expected
                                                           " feet through air is
 " + if (getSpeedInAir() > 0)

                            ^
Speed.java:47: error: 'else' without 'if'

                                 else if (getSpeedInWater() > 0)

                                 ^
Speed.java:56: error: not a statement

                                   "error";)

                                   ^
Speed.java:56: error: illegal start of expression

                                   "error";)

                                           ^
7 errors

C:\Users\GlaDOS\Desktop\JavaStuff>java   Speed
Error: Could not find or load main class Speed
4

4 回答 4

0

您的程序中可能有很多错误。

1) 你没有if声明。这就是为什么你得到错误的原因else without if

2)你最后的else是错的:

else
 "error";) 

你可能会这样尝试:

 if(getSpeedInAir() > 0)
 {
    System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is " +formatter.format(getSpeedInAir());
 }
 else if (getSpeedInWater() > 0)
 {
   System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is " + formatter.format(getSpeedInWater());
 }
else if (getSpeedInSteel() > 0)
{
  System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is " + formatter.format(getSpeedInSteel());
}
 else
   System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is "+ "error");

或更有效地像这样:-

String s;
if (getSpeedInAir() > 0)
{
    s= formatter.format(getSpeedInAir()).toString();
}
else if (getSpeedInWater() > 0)
{
    s= formatter.format(getSpeedInWater()).toString();
}
else if (getSpeedInSteel() > 0)
{
    s= formatter.format(getSpeedInSteel()).toString();
}
else
    s= "error";

System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is " + s);
于 2013-10-20T03:46:08.527 回答
0

这一行的错误

 "error";)

检查这一行你可能会写这样的东西

System.out.println("error");
于 2013-10-20T03:48:08.910 回答
0

您需要使用三元运算符?:而不是 if / else

... " feet through air is " + (getSpeedInAir() > 0 ? : formatter.format(getSpeedInAir()) ...
于 2013-10-20T03:49:16.223 回答
0

你不能在里面使用 if 语句System.out.println

可以使用三元运算符做一些事情,但为了代码的可读性,最好只声明一个变量并像这样连接:

String speed;
if (getSpeedInAir() > 0)
{
    speed = formatter.format(getSpeedInAir()).toString();
}
else if (getSpeedInWater() > 0)
{
    speed = formatter.format(getSpeedInWater()).toString();
}
else if (getSpeedInSteel() > 0)
{
    speed = formatter.format(getSpeedInSteel()).toString();
}
else
    speed = "error";

System.out.println("The time it takes the sound to travel " + distance +
                           " feet through air is " + speed);
于 2013-10-20T03:51:31.510 回答