2014-02-18 224 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