2014-02-18 442 views
-1

我無法弄清楚爲什麼程序不能運行。第一部分代碼是我創建的類,而第二部分是使用創建的類的程序。該計劃的基本要點是有一個硬幣折騰課程,然後在課程中多次使用該課程來玩遊戲。遊戲涉及翻轉硬幣的季度鎳和硬幣。如果硬幣是頭,那麼硬幣的價值將被添加到總額中,如果是尾巴,則不添加任何東西。當總額達到1.00美元或更高時,遊戲停止。如果總數正好是1.00美元,則用戶如果不是用戶輸了則贏。編譯但不運行的Java程序

//CoinToss Class 
import java.util.Random; 
public class Coin 
{ 
    private String sideUp; 

    public void toss() 
    { 
     Random flip = new Random(); 
     if (flip.nextInt(2) == 0) 
     { 
     String Up; 
     Up = "Tails"; 
     Up = sideUp; 
     } 
     else 
     { 
     String Up; 
     Up = "Heads"; 
     Up = sideUp; 
     } 
    } 

    public String getSideUp() 
    { 
     return sideUp; 
    } 
} 

不會運行程序:

public class CoinToss 
{ 
    public static void main(String[] args) 
    { 
    double total = 0.00; 
    while (total <= 1.00) 
    { 
     Coin quarter = new Coin(); 
     quarter.toss(); 
     String side1 = quarter.getSideUp(); 
     if (side1 == ("Heads")) 
     { 
     total += 0.25; 
     } 
     else 
     { 
      total += 0; 
     } 
     Coin dime = new Coin(); 
     dime.toss(); 
     String side2; 
     side2 = dime.getSideUp(); 
     if (side2 == ("Heads")) 
     { 
      total += 0.10; 
     } 
     else 
     { 
     total += 0; 
     } 
     Coin nickel = new Coin(); 
     nickel.toss(); 
     String side3; 
     side3 = nickel.getSideUp(); 
     if (side3 == ("Heads")) 
     { 
      total += .05; 
     } 
     else 
     { 
      total += 0; 
     } 

     } 
     if (total == 1.00) 
     { 
     System.out.printf("Balance: %$,.2f\n", total); 
     System.out.println("You win!"); 
     } 
     else 
     { 
     System.out.printf("Balance: %$,.2f\n", total); 
     System.out.println("You lose!"); 
     } 
     } 
    } 
+3

所以現在哭。 – Maroun

+1

'String Up; Up =「Tails」; Up = sideUp;'我認爲你正在嘗試初始化sideUp可能你應該使用'sideUp =「Tails」'來代替 – Yogesh

+0

這個部分我有點困惑因爲sideUp是一個私有變量,我不應該將它設置爲另一個變量以便能夠在程序中使用它嗎? – user3006947

回答

1

更改投幣類

public class Coin 
{ 
private String sideUp; 

public void toss() 
{ 
    Random flip = new Random(); 
    if (flip.nextInt(2) == 0) 
    { 
     sideUp = "Tails"; 
    } 
    else 
    { 
     sideUp = "Heads"; 
    } 
} 

public String getSideUp() 
{ 
    return sideUp; 
} 
} 

這作品!

正如上文所述,比較字符串用.equals(),或.equalsIgnoreCase()方法...

+0

謝謝!我非常感謝所有的幫助 – user3006947

1

使用字符串的equals()方法比較字符串

Instead of side1 == ("Heads") 

使用

side1.equals("Heads") and side2.equals("Heads") 

正確如下:

if (flip.nextInt(2) == 0) 
    {   
    sideUp = "Tails"; 
    } 
    else 
    {   
    sideUp = "Heads"; 
    } 
+2

你還應該提到,他從不設置'sideUp' – Njol

+0

@Njol,是的,他也應該設置sideUp – Rahul