#java
Вопрос:
Я создаю проект, в котором, когда пользователь вводит слово, слово будет иметь значение уже существующей двойной переменной. Как бы я сделал так, чтобы слово могло равняться двойной переменной, когда пользователь вводит его? После того, как пользователь введет слово, ввод будет помещен в другое математическое уравнение.
double answer = 5.5;
System.out.print("1st number: ");
System.out.print("Enter first number: ");
first = scanner.nextDouble();
// user inputs "Previous" , and the value is of the answer variable
System.out.print("Enter second number: ");
second = scanner.nextDouble();
// user inputs 1.1
answer = first second;
//5.5 1.1=6.6
Комментарии:
1. Если вы позвоните
nextDouble
, сканер распознает только номер, а не слово «Предыдущий».2. В качестве подсказки вы не сможете использовать
scanner.nextDouble()
, если ожидаемое значение не может быть двойным. Вам нужно будет использоватьnext()
его для чтения как aString
, а затем проверить, является ли значение «Предыдущим» (или любой другой строкой, имеющей значение в вашей программе), или иным образом попытаться проанализировать его как двойное.3. Будет ли это по-прежнему работать, если я не буду знать, введет ли пользователь фразу или двойник. Все зависит от того, хочет ли пользователь ввести слово «предыдущий», чтобы сделать «первое число» таким же, как в предыдущем ответе, или если он хотел получить совершенно новый номер.
Ответ №1:
Вы можете принять входные данные в виде строки и преобразовать их в двойной.
double first = Double.parseDouble(scanner.nextLine());
Редактировать:
Чтобы решить, выбирает ли пользователь «предыдущий» или вводит число, вы можете использовать уловку try. Синтаксический анализ создает исключение, если он не может превратить строку в двойник. Поэтому, если Double.parseDouble(«предыдущий») выдаст исключение, в то время как Double.parseDouble(«3.55») не выдаст.
Это выглядело бы примерно так:
first = scanner.nextLine();
double firstNumber;
try{
firstNumber = Double.parseDouble(first);
}
catch(NumberFormatException e){
if(first.equals("previous")){
firstNumber=answer;
}
Комментарии:
1. Будет ли это по-прежнему работать, если я не буду знать, введет ли пользователь фразу или двойник. Все зависит от того, хочет ли пользователь ввести слово «предыдущий», чтобы сделать «первое число» таким же, как в предыдущем ответе, или если он хотел получить совершенно новый номер.
2. Теперь, когда я лучше понимаю ваш вопрос, я отредактировал свой ответ. Вы можете использовать уловку «попробуй».
3. Лично я бы проверил известную строку, прежде чем пытаться ее проанализировать, чтобы избежать необходимости обрабатывать этот случай в
catch
блоке. Однако на самом деле это вопрос предпочтений.