Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование в Java.

Илья Волков Ученик (94), на голосовании 3 месяца назад
Помогите разобраться, в чем ошибка?
 import java.util.Scanner; 

class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int number=scan.nextInt();
int sum=scan.nextInt();
do{
int num=scan.nextInt();
if(number % num == 0){
sum += 1;
}
}while(num <= 0);
System.out.println(sum);
}
}
Голосование за лучший ответ
Оракул Оракул (62084) 4 месяца назад
В чем суть ошибки то? Исключение, виснет, неправильный результат?
Алексей Бородов Знаток (344) 4 месяца назад
Ошибка заключается в том, что переменная `num` объявлена внутри цикла `do-while` и недоступна за его пределами. Также условие цикла `num <= 0` будет проблемным, так как `num` объявляется в теле цикла. Вот исправленный код:

```java
import java.util.Scanner;

class Main {
public static void main(String[] args) {
Scanner scan = new Scanner( System.in );
int number = scan.nextInt();
int sum = scan.nextInt();
int num;

do {
num = scan.nextInt();
if (number % num == 0) {
sum += 1;
}
} while (num <= 0);

System.out.println(sum);
}
}
```

Теперь переменная `num` объявлена перед циклом, и её значение проверяется и обновляется внутри цикла.
Delfic Pro Ученик (122) 4 месяца назад
Ты хотя бы ошибку напиши
Зеленая бяка Просветленный (41306) 4 месяца назад
С этими nextInt уже 100 раз обсасывали проблему, решается тем, что после каждого nextInt надо добавить строку scan.nextLine();.
Похожие вопросы