我创建了一个名为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;
}
答案 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)
检查有效性条件。