Я работаю над программой, которая должна читать числа (double) из файла и выполнять некоторые вычисления на них (создание объектов восьмиугольника). Тем не менее, мы должны завершить программу, когда читается отрицательное число, и я не уверен, как это сделать?
Файл, который используется, выглядит следующим образом:
5.0
7.5
3.26
0.0
-1.0
Я использую цикл while для чтения в файле и присваиваю значения переменным, так что мне просто нужно добавить что-то в мой цикл while, если число отрицательно? Что-то вроде:
while(fin.hasNext()) {
double side = fin.nextDouble();
if(side < 0)
//do whatever I need to do to end the program
}
Или я совершенно не прав в этом мышлении?
Спасибо заранее за любые данные.
Это не совсем так, потому что fin.hasNext()
возвращает только, является ли следующая строка EOF (иначе нет текста), а не содержимое. Вам нужно будет проверить отрицательное значение внутри цикла. Это делается путем вызова nextDouble()
и сравнения его с 0, а затем разрыва, если он не является положительным. Все это предполагает, что вы используете класс Java Scanner.
Код будет выглядеть следующим образом:
while (fin.hasNextDouble()) {
double num = fin.nextDouble();
if (num < 0.0) break;
// do your stuff
Это было бы так же просто, как делать
while(fin.nextDouble()) {
double d = fin.nextDouble();
if (d < 0) {
break;
}
...
}
Другим подходом к этому было бы
double d;
while(fin.hasNextDouble() && (d = fin.nextDouble()) >= 0) {
...
}
while
и in-line присваивания.
hasNext()
возвращаетboolean
.