2013-05-03 23 views
0

我正在尝试使用扫描仪获取用户输入以将新项目添加到我创建的库存列表中,该项目必须具有属性itemID,itemDesc,price ,数量和重新排序级别。如何让扫描仪读取预设变量

我将如何去阅读用户输入,并将其识别为其中一个已创建的变量,然后将其添加到我的列表中?

我了个去,但它不似乎承认他们是我的变量

任何帮助将非常感激。 感谢

我尝试:

else if (i==1) 
    { 
     StockListInterface.doAddItem(item); 

     System.out.println("Add New Item"); 
     System.out.println("****************"); 

     System.out.println("Enter ID :>"); 
     Scanner scanner1 = new Scanner(System.in); 
     String itemID = scanner1.nextLine(); 

     System.out.println("Enter Description :>"); 
     Scanner scanner2 = new Scanner(System.in); 
     String itemDesc = scanner2.nextLine(); 

     System.out.println("Enter Price :>"); 
     Scanner scanner3 = new Scanner(System.in); 
     String price = scanner3.nextLine(); 

     System.out.println("Enter Quantity :>"); 
     Scanner scanner4 = new Scanner(System.in); 
     String quantity = scanner4.nextLine(); 

     System.out.println("Enter Re-Order Level :>"); 
     Scanner scanner5 = new Scanner(System.in); 
     String reOrderLevel = scanner5.nextLine(); 

     System.out.println("Enter another? (Y/N) :>"); 
    } 

回答

1

你并不需要创建一个新的Scanner每次需要输入时间。您可以使用预先定义的扫描仪如下:

else if (i==1) 
{ 
    StockListInterface.doAddItem(item); 

    System.out.println("Add New Item"); 
    System.out.println("****************"); 

    System.out.println("Enter ID :>"); 
    Scanner scanner1 = new Scanner(System.in); 
    String itemID = scanner1.nextLine(); 

    System.out.println("Enter Description :>"); 
    String itemDesc = scanner1.nextLine(); 

    System.out.println("Enter Price :>"); 
    String price = scanner1.nextLine(); 

    System.out.println("Enter Quantity :>"); 
    String quantity = scanner1.nextLine(); 

    System.out.println("Enter Re-Order Level :>"); 
    String reOrderLevel = scanner1.nextLine(); 

    System.out.println("Enter another? (Y/N) :>"); 
} 

你也应该考虑在年底再增加一个行,得到的“Y”或“N”输入如下:

String addAnother = scanner1.nextLine(); 
+0

谢谢。我如何做到这一点,让程序认识到这些变量是我想分配给我想要添加的项目的变量? – 2013-05-03 10:41:42

+0

假设你有一个'Item'对象,它有一个属性'id',那么你可以说'Item item = new Item();'和'item.setID = itemID',假设'id'是公共的,或者你可以给setter打'id'。 – 2013-05-03 11:02:19

0
One problem in your code i can see is you are creating Object of scanner every time when you get input. 

I Suggest you to use class BufferedReader like this. It works perfectly. 

BufferedReader br = null 
try{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String tmp = br.readLine(); 
    } catch(IOException ie){ 
System.out.println(e) 
} 

br.readLine() : always returns String 
You need to convert String into related to datatype. Let's say i want to convert that string to integer, Then i can use wrapper class like this 

Integer num = Integer.parseInt(tmp); 
+0

您将需要用try catch包围parseInt,以避免格式不正确 – o0rebelious0o 2013-05-03 10:32:08

0

你并不需要创建一个新的扫描仪要读取输入的每一次,只要使用

Scanner scanner = new Scanner(System.in); 

,然后每次你想读的输入使用

scanner.nextLine() 

,但如果你知道你在一个int等阅读,你可以使用特定的方法如

scanner.getInt() 

看到here以获取更多信息