2015-10-16 192 views
2

我是学习java编程的初学者。基本上,我已经找不到在之前的输入和处理数据之后多次从控制台输入输入的方式。在向您展示我的代码之前,我认为展示结果应该如何是个好主意。 该方案的结果应该是:while循环输入?

Please Enter either S(supply) or R(replenish) followed by ID and quantity. 
R  p122. 10 
New Stock-level for p122(Chain) is 58 
S. p124. 20 
New Stock-level for p125(Pedal) is 18 
S. p905. 20 
No part found with ID p905 
.....// enter empty string to terminate 

有不同类的用途。我已经可以使我的程序在一行输入下正常工作。

Please Enter either S(supply) or R(replenish) followed by ID and quantity. 
R  p122. 10 
New Stock-level for p122(Chain) is 58 

但是,我想不出如何让用户第二次输入输入等。我试图包含在while循环中,但它不能按预期工作。

Please Enter either S(supply) or R(replenish) followed by ID and quantity. 
R  p122. 10 
//It stops showing the result altogether... 

这是我的代码。请告诉我我做错了什么。

import java.util.Scanner; 

public class TestPart { 
    public static void main(String[] args) { 

    // Array of 5 Part objects 
    // Part[] part = new Part[5]; 
    Part[] part = new Part[5]; 
    part[0] = new Part("p122", "Chain", 48, 12.5); 
    part[1] = new Part("p123", "Chain Guard", 73, 22.0); 
    part[2] = new Part("p124", "Crank", 400, 11.5); 
    part[3] = new Part("p125", "Pedal", 3, 6.5); 
    part[4] = new Part("p126", "Handlebar", 123, 9.50); 

    ///////// Test Class 2 //////// 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Please Enter either S (supply) or R (replenish) followed by ID and quantity."); 
    while(!scanner.nextLine().equals("")){ 

    String sOrR = scanner.next(); 
    String inputId = scanner.next(); 
    int amount = scanner.nextInt(); 
    System.out.println(sOrR); 

    for (int i = 0; i < 5; i++) { 
     String id = part[i].getID(); 
     // Find ID in array 
     if (id.equals(inputId)) { 
      // S or R 
      if (sOrR.equals("R")) { 
       part[i].replenish(amount); 
      } else { 

       part[i].supply(amount); 

      } 
      System.out.println("New Stock-level for " + part[i].getID() + "(" + part[i].getName() + ") is " 
        + part[i].getStockLevel()); 
     } 


    } 
    if ((inputId.equals(part[0].getID()) == false) && (inputId.equals(part[1].getID()) == false) 
      && (inputId.equals(part[2].getID()) == false) && (inputId.equals(part[3].getID()) == false) 
      && (inputId.equals(part[4].getID()) == false)) { 
     System.out.println("No part found with ID " + inputId); 
    } 

    } 

    } 
} 

回答

3

替换此行:

while(!scanner.nextLine().equals("")){ 

有了:

while(scanner.hasNext()){ 

否则你已经在你的测试中跃居nextLine()