#java #methods
#java #методы
Вопрос:
Если входные данные равны 13, компилятор просто учтет первую цифру, равную 1. Я дам вам код Java.
class Max {
static void checkFever(double choice) {
// if temperature is less than 37, print "You have fever"
if (choice > 37) {
System.out.println("You have fever.");
}
else {
System.out.println("You don't have fever.");
}
}
public static void main(String[] args) throws IOException {
char choice;
choice = (char) System.in.read();
checkFever(choice);
System.out.println(choice); // this will make appear the result
}
}
результат следующий:
38
You have fever.
3
Комментарии:
1.
char
это один символ, вы, вероятно, захотите прочитать целоеString
или, что более предпочтительноdouble
, илиfloat
2. Компилятор этого не делает, программа. Программа делает это, потому
read()
что считывает один байт; для текстового ввода3
это один байт и7
еще один байт.3. Можете ли вы сделать
System.out.println
в начале метода checkFever?
Ответ №1:
Используйте a Scanner
, который переносит System.in
(который является InputStream
), чтобы прочитать всю строку, проанализированную в соответствующий примитивный или объектный тип данных. В вашем случае для температуры int
было бы достаточно, но предпочтительнее десятичное float
или double
.
Scanner scanner = new Scanner(System.in);
double choice = scanner.nextDouble();
checkFever(choice);
System.out.println(choice);
Ваш код не работает, потому что вы читаете один байт, используя метод InputStream::read
Считывает следующий байт данных из входного потока. Байт значения возвращается как int в диапазоне от 0 до 255.
Комментарии:
1. Чтобы добавить к этому ответу, ваш ввод преобразуется в
char
, поэтому38
читается как'3'
. При преобразовании этого в double это так51.0
.
Ответ №2:
System.in.read()
считывает только один символ. Вы можете прочитать целую строку с помощью java.util.Scanner
вспомогательного класса, поэтому:
import java.io.IOException;
import java.util.Scanner;
class Max {
static void checkFever(double choice) {
// if temperature is less than 37, print "You have fever"
if (choice > 37) {
System.out.println("You have fever.");
}
else {
System.out.println("You don't have fever.");
}
}
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
int temp = Integer.parseInt(answer);
checkFever(temp);
System.out.println(answer); // this will make appear the result
}
}
Это даст a NumberFormatException
, если пользователь не ввел допустимое целое число. Не стесняйтесь улучшать код. 🙂
(Справка : try{...} catch(...)
)