Несоответствие типов: невозможно преобразовать из сканера в boolean

Я делаю базовый конвертер валют, который берет у пользователей выбор валюты и конвертирует сумму, явно не законченную, поскольку я столкнулся с этой проблемой. Помощь и указатели будут оценены.

import java.util.Scanner;

class Converter {
 public static void main(String args[]){
 ****** PLN;
 ****** GDP;
 System.out.println("Which currency do you wish to convert?");
 System.out.println("Press a corresponding number");
 System.out.println("1. Great British Pound (GDP) £");
 System.out.println("2.Polish zloty (PLN) zl");

 Scanner option = new Scanner(System.in);

 if (option = 1){ 

 } 
 } 
}

ошибка

Исключение в потоке "main" java.lang.Error: Неразрешенные проблемы компиляции: Тип несоответствия: невозможно преобразовать из сканера в boolean Неверный тип: невозможно преобразовать из int в Scanner в Converter.main(Converter.java:14)

2 ответа

Это должно быть больше похоже на

Scanner option = new Scanner(System.in);
String userInput = option.nextLine();

if (userInput.equals("1")){ 
 // ...
}

Здесь несколько вещей не так:

  1. Тестирование равенства равно ==, NOT =. Вы пытаетесь назначить 1 объекту Scanner.
  2. Сам Scanner фактически не является строкой. Вам нужно вызвать readLine.
  3. Даже если Scanner был строкой, вы не можете сравнить String с int.
  4. Вам нужно использовать .equals для строк, так как == в Java всегда сравнивается по ссылке, а не по значению. == основном означает, что "эти два объекта являются одним и тем же объектом ", а не "делают эти два объекта одинаковыми".

Альтернативный способ - использовать nextInt:

Scanner option = new Scanner(System.in);

while (!option.hasNextInt()) {
 System.out.println("Bad input"); // print an error message
 option.nextLine(); // clear bad input
}
int userInput = option.nextInt();
if (userInput == 1) {
 // ...
}

Также обратите внимание, что вы можете использовать оператор switch для таких случаев:

int userInput = option.nextInt();
switch(userInput) {
case 1:
 // the user input was 1
 break;
case 2:
 // it was 2
 break;
// ...
default:
 // it was not any of the cases
}

Вы можете использовать switch на строках, но только на Java 7 или выше.


Вы можете изменить свое начальное условие:

if (option = 1) //??

к этому:

System.out.println("Enter int: ");
if ((option.nextInt()) == 1)
//do something

licensed under cc by-sa 3.0 with attribution.