我正在制作基本的货币转换器,用户可以选择货币并转换金额,显然没有完成,因为我遇到了这个问题。帮助和指示将不胜感激。
import java.util.Scanner;
class Converter {
public static void main(String args[]){
double PLN;
double 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:未解决的编译问题: 类型不匹配:无法从扫描程序转换为布尔值 类型不匹配:无法从int转换为Scanner 在Converter.main(Converter.java:14)
答案 0 :(得分:2)
应该更像是
Scanner option = new Scanner(System.in);
String userInput = option.nextLine();
if (userInput.equals("1")){
// ...
}
这里有些不妥之处:
==
,而不是=
。您正尝试将1
分配给Scanner
对象。Scanner
本身实际上不是字符串。您需要在其上拨打readLine
。Scanner
是字符串,也无法将String
与int
进行比较。.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
es,但仅限Java 7或更高版本。
答案 1 :(得分:0)
你可以......改变你的初始状态:
if (option = 1) //??
到此:
System.out.println("Enter int: ");
if ((option.nextInt()) == 1)
//do something