-5

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

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

爪哇

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=4][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,] [小数分隔符=.][正前缀=][负前缀=\Q-\E][正后缀=][负后缀=][NaN字符串=\Q?\E][无穷大字符串=\Q?\E ]

4

5 回答 5

5
if (kirill.equals(kirill2)){

kirillScanner对象,而不是字符串。尝试这样的事情:

Scanner kirill = new Scanner(System.in);
String userInput = kirill.next();
if (userInput.equals("Java")){
    ...

另外,请注意,如果用户键入“Java 是一种编程语言”,您的代码将打印“是”。如果您希望它仅使用“Java”进行验证,请替换nextnextLine.

于 2013-08-21T01:25:00.063 回答
0
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();
    }

}

您的Scanner. 您试图将 aScanner与 a匹配String。你不能这么傻!

于 2013-08-21T01:25:18.093 回答
0

将您正在阅读的内容保存到 aString中,而不是将Scanner对象与 a进行比较String。你的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();
}

另外,请注意,它.next()只会扫描到第一个分隔符(默认情况下是任何空格),所以如果你想确保用户键入"Java",那么你可能应该使用.nextLine()而不是.next().

于 2013-08-21T01:25:22.737 回答
0

让我们快速浏览一下您的代码,里面main()

Scanner kirill = new Scanner(System.in);

创建一个扫描仪并将其分配给一个变量,OK。

System.out.println(kirill.next());

打印用户键入的内容,但不将其分配给任何内容

String kirill2 = "Java";

只是一个字符串变量...好的。

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
    }
}

虽然不是必需的,但最好根据变量的作用或代表来命名变量,否则您很快就会感到困惑......

于 2013-08-21T01:35:47.670 回答
0

所以在这里,一个更简单的方法是:

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();

}

于 2013-08-21T02:16:10.310 回答