0

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?

Andreas
  • 2,455
  • 10
  • 21
  • 24
saqib riaz
  • 53
  • 1
  • 9

1 Answers1

1

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

Bahij.Mik
  • 1,358
  • 2
  • 9
  • 22
  • Is it possible to do that without inner loop? – saqib riaz Mar 16 '20 at 10:38
  • 1
    yes it is doable, but you will have to declare variables outside the loop and check the field value inside the loop, which i feel is unnecessary but if you say so, for example you can create a subject variable and inside the loop you can check if it is set or not, same goes for change, u can set a boolean for it. – Bahij.Mik Mar 16 '20 at 10:49
  • Edited my solution – Bahij.Mik Mar 16 '20 at 11:03