Как сделать так, чтобы введенная пользователем строка имела значение двойной переменной

#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() его для чтения как a String , а затем проверить, является ли значение «Предыдущим» (или любой другой строкой, имеющей значение в вашей программе), или иным образом попытаться проанализировать его как двойное.

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 блоке. Однако на самом деле это вопрос предпочтений.