Java 如何将nextLine()与字符串进行比较
我在我的APCS类中有一个任务,要求我们制作一个组合锁,我想我已经搞定了基本结构。但是,我一直遇到一个问题,无法将原始Java 如何将nextLine()与字符串进行比较,java,Java,我在我的APCS类中有一个任务,要求我们制作一个组合锁,我想我已经搞定了基本结构。但是,我一直遇到一个问题,无法将原始nextLine()与字符串进行比较 我想知道nextLine()s是否默认为ints?或者谁能告诉我我的代码出了什么问题 if((in.nextLine()).compareTo(combo)) { System.out.println("The lock is now unlocked."); System.out.printl
nextLine()
与字符串进行比较
我想知道nextLine()
s是否默认为int
s?或者谁能告诉我我的代码出了什么问题
if((in.nextLine()).compareTo(combo))
{
System.out.println("The lock is now unlocked.");
System.out.println("Please enter the combo to unlock: ");
if((in.nextLine()).compareTo(combo))
{
System.out.println("The lock is now locked.");
}
else
{
System.exit(0);
}
}
另外,ide返回错误:“错误:不兼容的类型:int不能转换为布尔值”,并引用if限定 nextLine()
将始终返回字符串,因此这不是您的问题
compareTo(str)
如果str
按字典顺序小于要比较的值,则返回负数;如果字符串按字典顺序相等,则返回0;如果str
按字典顺序大于要比较的值,则返回正数
您想使用等于(str)
,它返回一个布尔值 nextLine()
将始终返回字符串,因此这不是您的问题
compareTo(str)
如果str
按字典顺序小于要比较的值,则返回负数;如果字符串按字典顺序相等,则返回0;如果str
按字典顺序大于要比较的值,则返回正数
您想使用等于(str)
,它返回一个布尔值 您的问题是compareTo()返回的是整数值,而不是布尔值
请参阅Java API文档中的compareTo(在interface Comparable中,位于):
方法细节
比较
返回:负整数、零或正整数
由于此对象小于、等于或大于指定的
反对
比较两个字符串的最简单方法是使用
if (in.nextLine().equals(combo)) { /* code here */ }
也要注意这个节目中的另一个陷阱。第一个nextLine()和第二个nextLine()实际上是两个独立的输入行。nextLine()返回读取器的下一行输入,因此每次调用它时都会返回不同的输入行。解决方案是将nextLine()的结果保存为变量:
String enteredCombo = in.nextLine();
if (enteredCombo.equals(combo))
{
System.out.println("The lock is now unlocked.");
System.out.println("Please enter the combo to lock: ");
enteredCombo = in.nextLine();
if(enteredCombo.equals(combo))
{
System.out.println("The lock is now locked.");
}
else
{
System.exit(0);
}
}
您的问题是compareTo()返回的是整数值,而不是布尔值
请参阅Java API文档中的compareTo(在interface Comparable中,位于):
方法细节
比较
返回:负整数、零或正整数
由于此对象小于、等于或大于指定的
反对
比较两个字符串的最简单方法是使用
if (in.nextLine().equals(combo)) { /* code here */ }
也要注意这个节目中的另一个陷阱。第一个nextLine()和第二个nextLine()实际上是两个独立的输入行。nextLine()返回读取器的下一行输入,因此每次调用它时都会返回不同的输入行。解决方案是将nextLine()的结果保存为变量:
String enteredCombo = in.nextLine();
if (enteredCombo.equals(combo))
{
System.out.println("The lock is now unlocked.");
System.out.println("Please enter the combo to lock: ");
enteredCombo = in.nextLine();
if(enteredCombo.equals(combo))
{
System.out.println("The lock is now locked.");
}
else
{
System.exit(0);
}
}