javaloopserror-handlingwhile-loopflow-control

How can i repeat statement "enter marks or grade" with in while loop.In this case every time control back to start of loop to enter subject again?



How can i repeat statement "enter marks or grade" with in while loop.In this case every time control back to start of loop. and i want to repeat enter marks until user want to leave?


public class Marks2 {
    public static void main(String args[]){
        Scanner s=new Scanner(System.in);
        System.out.println("Here is Subject list");
        System.out.println("1-Physics");
        System.out.println("2-Math");
        System.out.println("3-computer");
        boolean input=true;

        while (input){
            System.out.println("Enter subject number here");
            String sub=s.nextLine();

            if(sub.equals("1")) {
                System.out.println("Physics");
                System.out.println("");
                System.out.println("Enter marks  /Enter change for change  /Enter exit for leave");
                String change1 = null;
                String change2 = null;
                int marks = 0;
                try {
                    change1 = s.nextLine();
                    marks = Integer.parseInt(change1);
                } catch (Exception e) {
                    System.out.println("Please enter only string value");
                    change2 = s.nextLine();
                    if (change2.equals("change")) {
                        continue;
                    } else if (change2.equals("exit")) {
                        System.exit(0);
                    }
                }

                if(marks<40){
                    System.out.println("Student is fail");
                }
                else if(marks==40){
                    System.out.println("Student is fail he need more practice");
                }
                else if(marks<70){
                    System.out.println("need more practice but also good");
                }
                else if(marks==70){
                    System.out.println("Good");
                }
                else if(marks<90){
                    System.out.println("Good but also Excellent");
                }
                else if(marks==90){
                    System.out.println("Excellent");
                }
                else if(marks<100){
                    System.out.println("Outstanding");
                }
                else if(marks==100){
                    System.out.println("Good but also excellent");
                }
                else if(change1.equals("change")){
                    continue;
                }
                else if(change2.equals("exit")){
                    System.exit(0);
                }
                else  {
                    System.out.println("");
                }
                continue;
            }
        }
    }
}

After continue control went to start of loop and ask to enter subject again. Is it possible to enter grade until user wants to leave?


Solution

  • You need another while loop inside the first one, if i understand right, you want to change the subject once you enter change? if that is the case then this will work:

    public static void main(String args[])
        {
            Scanner s = new Scanner(System.in);
            System.out.println("Here is Subject list");
            System.out.println("1-Physics");
            System.out.println("2-Math");
            System.out.println("3-computer");
    
            setSubject:
            while (true)
            {
                System.out.println("Enter subject number here");
                String sub = s.nextLine();
    
                if (sub.equals("1"))
                {
                    System.out.println("Physics");
    
                    int marks = 0;
                    while (true)
                    {
                        System.out.println("Enter marks  /Enter change for change  /Enter exit for leave");
                        if (s.hasNextInt())
                        {
                            marks = s.nextInt();
                            s.nextLine();
                        } else
                        {
                            String command = s.nextLine();
                            if (command.equalsIgnoreCase("exit")) break setSubject;
                            else if (command.equalsIgnoreCase("change")) continue setSubject;
                            else
                            {
                                System.out.println("Please enter a valid option");
                                continue;
                            }
                        }
    
                        if (marks < 40)
                        {
                            System.out.println("Student is fail");
                        } else if (marks == 40)
                        {
                            System.out.println("Student is fail he need more practice");
                        } else if (marks < 70)
                        {
                            System.out.println("need more practice but also good");
                        } else if (marks == 70)
                        {
                            System.out.println("Good");
                        } else if (marks < 90)
                        {
                            System.out.println("Good but also Excellent");
                        } else if (marks == 90)
                        {
                            System.out.println("Excellent");
                        } else if (marks < 100)
                        {
                            System.out.println("Outstanding");
                        } else if (marks == 100)
                        {
                            System.out.println("Good but also excellent");
                        } else
                        {
                            System.out.println("");
                        }
                    }
                }
            }
        }
    

    A Sample Run

    Here is Subject list
    1-Physics
    2-Math
    3-computer
    Enter subject number here
    1
    Physics
    Enter marks  /Enter change for change  /Enter exit for leave
    change
    Enter subject number here
    1
    Physics
    Enter marks  /Enter change for change  /Enter exit for leave
    50
    need more practice but also good
    Enter marks  /Enter change for change  /Enter exit for leave
    60
    need more practice but also good
    Enter marks  /Enter change for change  /Enter exit for leave
    exit
    
    Process finished with exit code 0
    
    

    With one while loop:

    public static void main(String args[])
        {
            Scanner s = new Scanner(System.in);
            System.out.println("Here is Subject list");
            System.out.println("1-Physics");
            System.out.println("2-Math");
            System.out.println("3-computer");
    
            String subject = "";
            int marks = 0;
    
            while (true)
            {
                if (subject.isEmpty())
                {
                    System.out.println("Enter subject number here");
                    subject = s.nextLine();
                }
    
                if (subject.equals("1"))
                {
                    System.out.println("Physics");
    
                    System.out.println("Enter marks  /Enter change for change  /Enter exit for leave");
                    if (s.hasNextInt())
                    {
                        marks = s.nextInt();
                        s.nextLine();
                    } else
                    {
                        String command = s.nextLine();
                        if (command.equalsIgnoreCase("exit")) break ;
                        else if (command.equalsIgnoreCase("change")) {
                            subject = "";
                            continue ;
                        }
                        else
                        {
                            System.out.println("Please enter a valid option");
                            continue;
                        }
                    }
    
                    if (marks < 40)
                    {
                        System.out.println("Student is fail");
                    } else if (marks == 40)
                    {
                        System.out.println("Student is fail he need more practice");
                    } else if (marks < 70)
                    {
                        System.out.println("need more practice but also good");
                    } else if (marks == 70)
                    {
                        System.out.println("Good");
                    } else if (marks < 90)
                    {
                        System.out.println("Good but also Excellent");
                    } else if (marks == 90)
                    {
                        System.out.println("Excellent");
                    } else if (marks < 100)
                    {
                        System.out.println("Outstanding");
                    } else if (marks == 100)
                    {
                        System.out.println("Good but also excellent");
                    } else
                    {
                        System.out.println("");
                    }
                    marks = 0;
                }
            }
        }