如何确保用户仅输入0到10之间的数字?

时间:2016-11-05 21:02:48

标签: java arrays loops for-loop

我创建了一个名为subjectName的所有主题的数组。此代码的目标是确保用户只输入有效数字(介于1.0和10.0之间)。但我不知道该怎么做。我创建了一个if语句,如果主题名称不在0到10之间,则返回,但这不起作用。我不确定如何解决这个问题。

编辑:subjectName是每个主题的名称,因此它是一个字符串。 subjectGrade是双倍的。两个阵营。忘了提一下。

这是我的代码:

for (int i = 0; i < subjectName.length; i++) {
            Scanner input = new Scanner(System.in);
            System.out.print("What is your grade for: " + subjectName[i] + "? ");
            subjectGrade[i] = input.nextDouble();

            if ( subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0) {
                return;
            }

5 个答案:

答案 0 :(得分:1)

if(subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0) {
    i--; // subract one so we doesn't skip the one student who made incorrect input
    // you can put return or continue here, but not necessary
}

答案 1 :(得分:1)

仅在输入有效时增加i

Scanner input = new Scanner(System.in);
for (int i = 0; i < subjectName.length; ) {

    System.out.print("What is your grade for: " + subjectName[i] + "? ");
    double grade = input.nextDouble();
    if ( grade > 0.0 && grade < 10.0) {
        studentGrade[i++] = grade;
    }
    // else, loop repeats with same value of 'i' 

答案 2 :(得分:0)

if中有一个错误的变量。它应该是vakCijfers[i],对吧?

if ( vakCijfers[i] < 0.0 || vakCijfers[i] > 10.0) {

答案 3 :(得分:0)

您应该使用while循环。在成绩无效时提问。

while(subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0)
{
    System.out.print("What is your grade for: " + subjectName[i] + "? ");
    subjectGrade[i] = input.nextDouble();
}

(代替if

无论如何,你的错误是return语句不会重复最后一个命令或任何事情。它从函数...

返回一个值

答案 4 :(得分:0)

好的,所以要重新使用直到正确答案使用:

do{
  subjectGrade[i] = input.nextDouble();
}while(!isValid(subjectGrade[i]);

isValid(double Grade)检查有效性条件。