1

我是 Java 编程新手,在理解如何获取用户输入并将其转换为我的程序可以理解的内容时遇到了问题。我试图在这个程序中输入用户的一个字符,并让程序接受它并在 switch 语句中使用它。请有人好心告诉我我将使用什么关键字或技术来输入字符,或者将字符串转换为我的程序的字符而不会真正令人费解?感谢您的帮助,并提前感谢您!

import java.util.Scanner;
//import java.util.Scanner;
public class VendingMachine;
{

   public static void main(String[] args)
   {
      Scanner scanner = new Scanner (System.in);
      int selection=0;
      int x=0;
      float origItemNum = 15;
      float origDebitBal = 15;
      double balanceDebit;
      double balanceItemNum;
      double items = 0;
      char choice = 0;

      //initialize variables


      boolean validSelection;
      System.out.print("\nInitial Account Settings:");
      System.out.print("\nUnused Item Capacity: 15");
      System.out.print("\nCost (so far) this month: $15");
      balanceDebit=origDebitBal;
      balanceItemNum = origItemNum;

      while(x==0)
      {
         System.out.print("\nMenu:"); 
         System.out.print("\nB (show Bill and starts new month)");  
         System.out.print("\nU (show Unused capacity for the current month)"); 
         System.out.print("\nC (Consume vending items now -- " +
               "purchase candy bar, bag of chips, etc.)"); 
         System.out.print("\nA (buy Additional items for current month)"); 
         System.out.print("\nQ (show bill and Quit)"); 
         String strUserAnswer;
         String strQuestion;
         String choiceVerify;
         Scanner input_stream = new Scanner(System.in);
         strQuestion = new String("What choice would you like? Please" +
               "enter in either option A, B, U, C- or enter E to quit. ");
         strUserAnswer = input_stream.nextLine();
         choice = (char) Integer.parseInt(strUserAnswer);
         choiceVerify = ("You chose choice: ");
         System.out.print(strUserAnswer);
         input_stream.close();
         switch (selection)
         {
         case 'b':
         case 'B': 
            System.out.print("\n\nClosing bill for month:");
         //   System.out.print("\nUnused items (lost):" );
         //   System.out.print(balanceItemNum);
          //  System.out.print("\nFinal amount due immediately: $" );
          //  System.out.print(balanceDebit);
           // System.out.print("\nStarting new month ...Available items: 15");
           // balanceItemNum = 15;
           // balanceDebit = 15;
            break;

         case 'u':
         case 'U':
            System.out.print("\nUnused capacity of items you can use: " );
           // System.out.print(balanceItemNum);
           // System.out.print("\nYour debit balance: $" );
           // System.out.print(balanceDebit);
            break;

         case 'c':
         case 'C':
            System.out.print("\nNumber of items you want to purchase:");
          //  Scanner input = new Scanner(System.in);
            //items = input.nextDouble();
            //balanceItemNum = balanceItemNum-items;
           // balanceDebit = balanceDebit - items;
           // System.out.print("\nAvailable Items: " );
           // System.out.print(balanceItemNum);
            break;

         case 'a':
         case 'A': 
            String numberString = JOptionPane.showInputDialog("\nAdditional " +
                  "items purchase in sets of 10 (1-3):");
           // double number = Double.parseDouble(numberString);
            //      while (number == 1 || number == 2 || number == 3)
           // number = number * 11;
           // balanceItemNum = balanceItemNum + number;
           // balanceDebit = balanceDebit + number;
            break;

         case 'e':
         case 'E':
            System.out.print("\nYour debit balance: $" );
           // System.out.print(balanceDebit);
            break;
         }
      }

      while (choice != 'e' && choice != 'E');
      System.out.print("\nError: Please enter in either B, U, C, A or Q.");
      return;
   }
}
4

3 回答 3

0
strUserAnswer = input_stream.nextLine();
char c = strUserAnswer.charAt(0);

然后打开c

input_stream.close();此外,在 while 循环内部调用会遇到问题。它必须位于循环外部,以便您一次阅读更多内容(使用封闭的扫描仪无法阅读任何内容)。

于 2013-06-28T18:16:48.780 回答
0

你应该改变这一行

choice = (char) Integer.parseInt(strUserAnswer);

所以看起来像这样

choice = strUserAnswer.charAt(0);

通过此更改,charAt(0)您可以在用户输入的内容的位置 0(第一个)中获取字符,然后将其保存在名为 choice 的变量中。

然后在这部分将变量选择更改为选择

switch(selection){
    //all of your code
} 

所以它看起来像这样

switch(choice){ 
    //all of your code
}

因此,开关将使用您之前存储使用过的输入的变量。

于 2013-06-28T18:38:04.657 回答
0

这看起来是一个好的开始,但是您应该尝试和改进一些事情。您可以通过执行以下操作来减少代码的长度并显着提高代码的可读性:

String choiceVerify;
choiceVerify = ("You chose choice: ");

变成

String choiceVerifyc = "You chose choice: ";

和这个:

String strUserAnswer;
strUserAnswer = input_stream.nextLine();

变成:

String strUserAnswer = input_stream.nextLine();

通过缩短和删除代码中不必要的部分,您可以更轻松地在 StackOverflow 上帮助您。

祝你编码好运!

于 2013-06-28T18:53:56.633 回答