如何在方法中循环此菜单?

时间:2016-05-07 03:46:46

标签: java loops methods

我之前在无关标签上发布了这个问题,对不起

readStudentGrade()

我想将方法​​double与返回类型message和参数String一起用作img { -webkit-filter: blur(13px); -moz-filter: blur(13px); -o-filter: blur(13px); -ms-filter: blur(13px); filter: blur(13px); } img:hover { -webkit-filter: blur(0px); -moz-filter: blur(0px); -o-filter: blur(0px); -ms-filter: blur(0px); filter: blur(0px); } (代表Aptitude测试或学校成绩的名称)。允许用户输入一个标记,如果输入的值介于0和100之间,则返回该标记。否则,该方法将打印消息并强制用户输入正确的标记。我无法弄清楚如何在不造成无限循环的情况下做到这一点。

这就是输出的方式。

  

输入能力倾向测试成绩:120

     

输入无效! (必须在0到100之间)      请再试一次。

     

输入能力倾向测试成绩:90      输入入门年级:105

     

输入无效! (必须在0到100之间)      请再试一次。

     

输入入门年级:92      输入学校的成绩:150

     

输入无效! (必须在0到100之间)      请再试一次。

     

输入学校成绩:95

提前致谢。

2 个答案:

答案 0 :(得分:3)

您的代码存在一些问题:

  1. 在进入循环之前提示用户输入。它们永远不会以这种方式被重新提示输入。输入提示需要进入你的while循环。
  2. 您对下一个输入的扫描也发生在while循环之外。这需要在循环中发生。
  3. 你的循环中有第二个return message;语句,它发生在if / else语句的范围之外。因此,无论用户输入的数据是否有效,该返回将在循环的第一次迭代结束时执行。你需要删除这一行。
  4. 更多的是挑剔的事情,但是message函数输入的名称readStudentGrade是不合适的。你正在通过你想要检查的成绩,一个双倍。或许更好的名字是grade
  5. 以下是一种可能的解决方案:

        public class JavaApplication50 {
    
            double getInput(double min, double max, String message, Scanner in) {
                while (true) {
                    System.out.println(message);
                    double input = in.nextDouble();
                    if (input <= max && input >= min) {
                        return input;
                    } else {
                        System.out.println("Invalid input! (must be between " + min + " and " + max + ") Please try again.");
                    }
                }
            }
    
            public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                JavaApplication50 app = new JavaApplication50();
    
                System.out.println("Enter student's Grades...");
    
                double aptTestGrade = app.getInput(0, 100, " > Enter the grade of Aptitude Test: ", in);
                double introYearGrade = app.getInput(0, 100, " > Enter the grade of Introductory Year: ", in);
                double schoolGrade = app.getInput(0, 100, " > Enter the grade of School: ", in);
    
                System.out.print("Grades summary: \nAptitude Test: " + aptTestGrade + "\nIntroductory year: " + introYearGrade
                        + "\nSchool: " + schoolGrade);
            }
        }
    

    注意方法getInput如何接受最小值,最大值和消息作为参数。它还可以接受错误消息,以获得更大的灵活性。

答案 1 :(得分:0)

如果合适的话,你也可以试试这个。

import java.util.Scanner;
public class Demo{
     public static void main(String arg[])
     {
        int no=0;
        Scanner in=new Scanner(System.in);
        System.out.println("Enter students Grades:");
        double message;
        outer:while(true)
        {
            switch(no)
            {
                case 0:
                    System.out.println("Enter the grade of Aptitude Test :");
                    message = in.nextDouble();
                    if(message<0 | message>100)
                    {
                        System.out.println("Invalid input! (must be between 0 and 100)\n >    Please try again.");
                        break;
                    }
                    else
                    {
                        no++;break;
                    }

                case 1:
                    System.out.println("Enter the grade of Introductory Year :");
                    message = in.nextDouble();
                    if(message<0 | message>100)
                    {
                        System.out.println("Invalid input! (must be between 0 and 100)\n >    Please try again.");
                        break;
                    }
                    else
                    {
                        no++;
                        break;
                    }
                case 2:
                    System.out.println("Enter the grade of School :");
                    message = in.nextDouble();
                    if(message<0 | message>100)
                    {
                        System.out.println("Invalid input! (must be between 0 and 100)\n >    Please try again.");
                        break;
                    }
                    else
                    {
                        no++;
                        break;
                    }
                case 3:
                    break outer;
            }
         }
    }

} 这个垫子可以帮助你找到解决方案。