2

I am beginner in learning java programming. Basically, I can't figure out the way to enter input from console multiple times after already previous input and processing data. Before I show you my code, I think it is a good idea to show how the result should be. The result of the program should be:

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

There are uses of a different class. I already be able to make my program works correctly with one line input.

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

However, I cannot figure out how to let users enter input the second time and so on. I tried to include in a while loop but it does not work as expectation.

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

Here is my code. Please show me what I did wrong.

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);
    }

    }

    }
}

1 Answer 1

3

Replace this line :

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

With :

while(scanner.hasNext()){

Otherwise you're already jumping to the nextLine() within your test.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.