2013-10-20 46 views
-1

所以我正在做一個分配,我必須在顯示距離的構造函數中有一個打印方法。 根據輸入在演示類中的內容,我還必須有三個獨立的get方法。 我的問題是,我試圖編寫print方法來包含一個基於哪個get使用的決策結構。 public void prt(){ DecimalFormat formatter = new DecimalFormat(「#,## 0.00」);聲明System.out.println內的決策結構

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 
+1

你不能做到這一點。使用多個打印語句或一個變量。 – SLaks

回答

0

您需要使用三元運算符?:代替的if/else

... " feet through air is " + (getSpeedInAir() > 0 ? : formatter.format(getSpeedInAir()) ... 
0

您的程序中可能存在很多錯誤。

1)您沒有if聲明。這就是爲什麼你有錯誤else without if

2)你最後別人是錯的:

else 
"error";) 

您可以proably嘗試這樣的:

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); 
0

errror line

"error";) 

檢查此行 你可能會寫這樣的事情

System.out.println("error"); 
0

不能使用if語句裏面的System.out.println就是這樣。

可以做的ternary operator的東西,但對於代碼的可讀性起見,它可能是最好只聲明一個變量並連接,像這樣:

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);