0

I'm having problem when editing new Status and new Color. When I'm using next it works fine but with nextLine the program doesn't allow me to input anything and it skips to the next. Can anyone help me to solve this problem. It must be able to read the input after spaces. Thank you very much. Thank you very much. Thank you very much. This is how it looks when running the program. It shows status updated successfully but it did not allow me to input.

package com.company;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        ArrayList<Car> cars = new ArrayList<>();
        int choice;
        Car car = new Car();
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("\n1 - Insert car\n2 - Edit car\n3 - Exit");
            System.out.println("Enter your choice: ");
            choice = scanner.nextInt();
            switch (choice){
                case 1:
                    car = new Car();
                    scanner = new Scanner(System.in);
                    System.out.println("Enter Plate number: ");
                    car.setPlateNumber(scanner.nextLine());
                    System.out.println("Enter Brand: ");
                    car.setBrand(scanner.nextLine());
                    System.out.println("Enter Model: ");
                    car.setModel(scanner.nextLine());
                    System.out.println("Enter type: ");
                    car.setType(scanner.nextLine());
                    System.out.println("Enter Color: ");
                    car.setColour(scanner.nextLine());
                    System.out.println("Enter Price: ");
                    car.setPrice(scanner.nextDouble());
                    scanner = new Scanner(System.in);
                    System.out.println("Enter Status: ");
                    car.setStatus(scanner.nextLine());
                    cars.add(car);
                    System.out.println("\nCar saved successfully!!");
                    break;
                case 2:
                    car = new Car();
                    scanner = new Scanner(System.in);
                    System.out.println("Enter car Plate Number: ");
                    car.setPlateNumber(scanner.nextLine());
                    if(!car.editCarRecord(cars))
                        System.out.println("Car not found!!");
                    break;
                case 3:
                    return;
                default:
                    System.out.println("Invalid option!!");
            }
        }

    }
}


package com.company;

import java.util.ArrayList;
import java.util.Scanner;

public class Car {
    private String plateNumber;
    private String brand;
    private String model;
    private String type;
    private String colour;
    private String status;
    private double price;

    public Car() {
        // Define this if we want default values
    }

    public Car(String pn, String br, String mo, String ty, String co, String st, double pr) {
        plateNumber = pn;
        brand = br;
        model = mo;
        type = ty;
        colour = co;
        status = st;
        price = pr;
    }

    public void setPlateNumber(String pn) {
        plateNumber = pn;
    }

    public void setBrand(String br) {
        brand = br;
    }

    public void setModel(String mo) {
        model = mo;
    }

    public void setType(String ty) {
        type = ty;
    }

    public void setColour(String co) {
        colour = co;
    }

    public void setStatus(String st) {
        status = st;
    }

    public void setPrice(double pr) {
        price = pr;
    }

    public String getPlateNumber() {
        return plateNumber;
    }

    public String getBrand() {
        return brand;
    }

    public String getModel() {
        return model;
    }

    public String getType() {
        return type;
    }

    public String getColour() {
        return colour;
    }

    public String getStatus() {
        return status;
    }

    public double getPrice() {
        return price;
    }

    public boolean editCarRecord(ArrayList<Car> list){
        Scanner scanner = new Scanner(System.in);
        int choice;
        for(int i=0; i<list.size(); i++) {
            if (list.get(i).getPlateNumber().compareToIgnoreCase(this.getPlateNumber()) == 0) {
                System.out.println("Car record matched!!");
                System.out.println(list.get(i).toString());
                while(true) {
                    System.out.println("1 - Edit Status\n2 - Edit Price\n3 - Edit Color\n4 - Back to main menu");
                    System.out.println("Enter your choice: ");
                    choice = scanner.nextInt();
                    if (choice == 1) {
                        System.out.println("Enter new Status: ");
                        list.get(i).setStatus(scanner.nextLine());
                        System.out.println("Status updated Successfully!");
                    } else if (choice == 2) {
                        System.out.println("Enter new Price: ");
                        list.get(i).setPrice(scanner.nextDouble());
                        System.out.println("Price updated Successfully!");
                    } else if (choice == 3) {
                        System.out.println("Enter new Color: ");
                        list.get(i).setColour(scanner.nextLine());
                        System.out.println("Color updated Successfully!");
                    } else if (choice == 4) {
                        return true;
                    } else {
                        System.out.println("Invalid choice!!");
                    }
                }
            }
        }
        return false;
    }

    public String toString() {
        return "Plate number: " + plateNumber
                + "\nBrand: " + brand
                + "\nModel: " + model
                + "\nType: " + type
                + "\nColour: " + colour
                + "\nStatus: " + status
                + "\nPrice: " + price;
    }
}

0 Answers0