Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将nextLine()与字符串进行比较_Java - Fatal编程技术网

Java 如何将nextLine()与字符串进行比较

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

我在我的APCS类中有一个任务,要求我们制作一个组合锁,我想我已经搞定了基本结构。但是,我一直遇到一个问题,无法将原始
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);
    }
}