2016-11-05 2 views
0

Я создал массив со всеми моими субъектами под названием subjectName. Цель этого кода - убедиться, что пользователь вводит только допустимые числа (от 1.0 до 10.0). но я не знаю, как это сделать. Я создал оператор if и вернул его, если имя субъекта не находится между 0 и 10, но это не работает. Я не знаю, как я смогу справиться с этим.Как я могу убедиться, что пользователь вводит число от 0 до 10?

EDIT: 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

Каковы типы 'subjectName',' invoer', 'vakCijfers'? –

+0

Вам нужен номер 1-10 или 0-10? Я не уверен, что это важно, но я в замешательстве. – Neo

+0

ой, позвольте мне изменить его. –

ответ

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 утверждение не повторяет последнюю команду или что-нибудь. Она возвращает значение из функции ...

+0

СПАСИБО, ЧТО ВЫ ЭТО РАБОТАЛИ! –

+0

Ваш приветствуем. В следующий раз будьте осторожны, чтобы четко написать свой вопрос. Также будет хорошо, если вы правильно ответили бы на мой ответ:) – Neo

+0

Btw я могу задать вам другой вопрос или мне нужно сделать совершенно новую тему? –

0

В if есть неправильная переменная. Это должно быть vakCijfers[i], правильно?

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

Да, я просто изменил его. Извините –

+0

subjectName - это имена каждого предмета, поэтому его строка. subjectGrade - это двойной. Оба являются массивами. –

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

только увеличить 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' 
0

Хорошо, таким образом, чтобы repat до правильного использования ответ:

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

и isValid(double Grade) проверяет срок действия.

Смежные вопросы