-1

そのため、距離を表示するコンストラクターに print メソッドが必要な割り当てに取り組んでいます。また、デモ クラスの入力内容に応じて、3 つの個別の get メソッドも必要です。私の質問は、使用される get に基づく決定構造を含むように print メソッドを作成しようとしているということです。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

?: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 に答える
0

あなたのプログラムにはおそらく多くのエラーがあります。

1) あなたはif声明を持っていません。そのため、エラーが発生しましたelse without if

2) 最後のあなたは間違っています:

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 に答える