繁体   English   中英

可以编译但无法运行的Java程序

[英]Java Program that compiles but doesn't run

我无法弄清楚为什么该程序无法运行。 代码的第一部分是我创建的类,而第二部分是使用创建的类的程序。 该程序的基本要点是拥有掷硬币类,然后在程序中多次使用该类玩游戏。 游戏涉及将硬币翻转四分之一镍和一角硬币。 如果硬币为正面,则将硬币的值添加到总数中;如果硬币为正面,则不添加任何值。 当总数达到$ 1.00或更高时,游戏停止。 如果总计恰好是$ 1.00,则用户获胜;否则,用户将输。

//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!");
         } 
      }
     }

使用String equals()方法比较字符串

 Instead of side1 == ("Heads")

采用

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

并更正如下:

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

更改您的硬币课程

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()方法比较字符串...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM