Java 扫描仪不工作?

Java 扫描仪不工作?,java,Java,我是Java新手,我正在尝试制作一个Java应用程序,它要求您拼写“Java”,如果您拼写正确,它将键入“是”,但是,它键入的是“否”,我做错了什么: package quiz; import java.util.Scanner; public class quiz { public static void main(String[] args) { Scanner kirill = new Scanner(System.in); System.out.p

我是Java新手,我正在尝试制作一个Java应用程序,它要求您拼写“Java”,如果您拼写正确,它将键入“是”,但是,它键入的是“否”,我做错了什么:

package quiz;
import java.util.Scanner;
public class quiz {
    public static void main(String[] args) {
        Scanner kirill = new Scanner(System.in);
        System.out.println(kirill.next());
        String kirill2 = "Java";
        if (kirill.equals(kirill2)){
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
        System.out.println(kirill);
        kirill.close();
    }

}
运行代码: 爪哇

爪哇

没有

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=4][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=.][positive prefix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q?\E]

kirill
Scanner
对象,而不是字符串。试着这样做:

Scanner kirill = new Scanner(System.in);
String userInput = kirill.next();
if (userInput.equals("Java")){
    ...
另外,请注意,如果用户键入“Java是一个编程语言”,则代码将打印“是”。如果您只想用“Java”进行验证,请用
nextLine
替换
nextLine

package quiz;
import java.util.Scanner;
public class quiz {
    public static void main(String[] args) {
        String kirill;
        String kirill2 = "Java";
        Scanner input = new Scanner(System.in);
        kirill = input.next(); 
        if (kirill.equals(kirill2)){
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
        System.out.println(kirill);
        input.close();
    }

}

您的
扫描仪出现小问题。您试图将
扫描仪
字符串
匹配。你不能这么傻

将读取的内容保存到
字符串中,而不是将
扫描仪
对象与
字符串
进行比较。您的
main
方法应该如下所示

public static void main(String[] args) {
    Scanner kirill = new Scanner(System.in);
    String input = kirill.nextLine();
    System.out.println(input);
    String kirill2 = "Java";
    if (input.equals(kirill2)){
        System.out.println("yes");
    }else{
        System.out.println("no");
    }
    System.out.println(kirill);
    kirill.close();
}

另外,请注意,它将只扫描到第一个分隔符(默认情况下为任何空格),因此如果您想确保用户只键入
“Java”
,那么您可能应该使用而不是
。下一步()

让我们快速查看一下您的代码,在
main()

创建扫描程序并将其分配给变量,确定

System.out.println(kirill.next());
打印用户键入的内容,但不将其分配给任何内容

只是一个字符串变量。。。嗯

if (input.equals(kirill2)){
如果扫描仪与一些文本相等,则继续。等等,你明白我刚才说的吗?比较扫描仪和字符串。这样的结局是不对的。想象一个机器人,你给它一杯水和一张写着“水”的纸,然后问它们是否相等。显然他们不是,也不可能是。您将一个设定值与另一个设定值进行比较,而不是用户的输入。以下是正确的:

package quiz;
import java.util.Scanner;
public class quiz {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in); //creates a scanner
        String text = "Java";                  //creates the text to be compared
        String input = scan.nextLine();        //read some arbitrary text the user types
        if (input.equals(text)){               //checks if user's input is equal to text
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
        scan.close();                         //closes the Scanner
    }
}

虽然不是必需的,但最好按照变量的作用或表示来命名变量,否则您很快就会感到困惑……

因此,这里有一个更简单的方法:

package quiz;
import java.util.Scanner;

 public static void main(String[] args) {

 String userInput;
 String word = "Java":

 Scanner in1 = new Scanner(System.in);
 userInput = in1.next();
 System.out.println( userInput );

 if (word.equals(userInput)) {
     System.out.println("Yes!");
     }else{
         System.out.println("No.");
         }

System.out.println( userInput );
userInput.close();

}/P>您应该考虑使用有意义的变量名,即使它们与类名相同。另外,尝试在调试器中单步执行代码,并戳出内容的值。这两条弦真的相等吗?可能您正在从控制台读取的用户名末尾有一个换行符或其他内容。包名通常是

com.example.name
和类名通常以大写字母开头。我们知道您喜欢您的用户名,但它必须停止。+1和变量名的主要问题:)
if (input.equals(kirill2)){
package quiz;
import java.util.Scanner;
public class quiz {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in); //creates a scanner
        String text = "Java";                  //creates the text to be compared
        String input = scan.nextLine();        //read some arbitrary text the user types
        if (input.equals(text)){               //checks if user's input is equal to text
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
        scan.close();                         //closes the Scanner
    }
}
package quiz;
import java.util.Scanner;

 public static void main(String[] args) {

 String userInput;
 String word = "Java":

 Scanner in1 = new Scanner(System.in);
 userInput = in1.next();
 System.out.println( userInput );

 if (word.equals(userInput)) {
     System.out.println("Yes!");
     }else{
         System.out.println("No.");
         }

System.out.println( userInput );
userInput.close();