使用do-while循环并找到2个数字之间的差异

时间:2015-03-06 04:59:43

标签: java

我尝试创建一个随机生成1到10,000之间的数字的程序,然后将此数字除以100,以创建另一个用户应该输入更改的数字。 (67.48将是20个' s,1' s,宿舍等等的数量)...如果用户在他们的答案中输入了错误的数字,该程序应该是显示他们的答案和随机数之间的差异。词汇表中没有任何关于差异或找到它们的内容......而且我从来没有做过像我们目前正在失去的那样广泛的do-while循环。我需要一些帮助才能找到我做错的事情。

// ---------1---------2---------3---------4---------5---------6---------7
// 1234567890123456789012345678901234567890123456789012345678901234567890
import java.util.Scanner;
import java.util.Random;

public class ChangeGame
{
   public static void main(String[] args)
   {
      int low = 1;
      int max = 10000;
      int twentyDollars = 0;
      int tenDollars = 0;
      int fiveDollars = 0;
      int oneDollar = 0;
      int quarters = 0;
      int dimes = 0;
      int nickels = 0;
      int pennies = 0;
      Random random = new Random();
      int randomNumber = random.nextInt(max - low + 1);
      double randomNumber1 = (randomNumber /100.0); 

      Scanner keyboard = new Scanner(System.in);

      do  
      {
         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Twenties: "); 
         twentyDollars = keyboard.nextInt();
         while( twentyDollars < 0 );
         {
            System.out.println( "** Invalid Amount **\n" +
               "Twenties: " );
            twentyDollars = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Tens: "); 
         tenDollars = keyboard.nextInt();
         while( tenDollars <= 1 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Tens: " );
            tenDollars = keyboard.nextInt(); 
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Fives: "); 
         fiveDollars = keyboard.nextInt();
         while( fiveDollars <= 1 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Fives: " );
            fiveDollars = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Ones: "); 
         oneDollar = keyboard.nextInt();
         while( oneDollar <= 4 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Ones: " );
            oneDollar = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Quarters: "); 
         quarters = keyboard.nextInt();
         while( quarters <= 3 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Quarters: " );
            quarters = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Dimes: "); 
         dimes = keyboard.nextInt();
         while( dimes <= 2 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Dimes: " );
            dimes = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Nickels: "); 
         nickels = keyboard.nextInt();
         while( nickels <= 1 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Nickels: " );
            nickels = keyboard.nextInt();
         }

         System.out.println("Enter the change for " + randomNumber1);
         System.out.println("Pennies: "); 
         pennies = keyboard.nextInt();
         while( pennies <= 4 )
         {
            System.out.println( "** Invalid Amount **\n" +
               "Pennies: " );
            pennies = keyboard.nextInt();
         }

      while( difference != 0);
         {
            System.out.println("Incorrect by: ");
         }
   } 
}​

1 个答案:

答案 0 :(得分:1)

这是一个错误(不确定它是否是唯一错误):

更改

     while( twentyDollars < 0 );
                               ^
     {
        System.out.println( "** Invalid Amount **\n" +
           "Twenties: " );
        twentyDollars = keyboard.nextInt();
     }

     while( twentyDollars < 0 )
     {
        System.out.println( "** Invalid Amount **\n" +
           "Twenties: " );
        twentyDollars = keyboard.nextInt();
     }

while( twentyDollars < 0 );可能是无限循环(如果最初为twentyDollars < 0)。

编辑:

这里有另一个错误:

  while( difference != 0);
  {
      System.out.println("Incorrect by: ");
  }

看起来这个while意味着结束do-while循环。如果是这种情况,那么您错过了}

}
while (difference != 0);

并不清楚以下内容

{
    System.out.println("Incorrect by: ");
}

打算这样做。它与之前的while语句无关。