扫描仪不工作?

时间:2013-08-21 01:21:36

标签: java

我是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.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 prefix = \ Q- \ E] [positive suffix =] [negative suffix =] [NaN string = \ Q?\ E] [infinity string = \ Q ?\ E]

5 个答案:

答案 0 :(得分:5)

if (kirill.equals(kirill2)){

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

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

另外,请注意,如果用户键入“Java是编程语言”,则代码将打印“是”。如果希望仅使用“Java”进行验证,请将next替换为nextLine

答案 1 :(得分: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的小问题。您试图将ScannerString匹配。你不能那么傻!

答案 2 :(得分:0)

将您正在阅读的内容保存到String,而不是将Scanner对象与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()只扫描到第一个分隔符(默认情况下是任何空格),因此如果要确保用户类型{{1那么你应该使用.nextLine()而不是"Java"

答案 3 :(得分:0)

让我们快速浏览一下main()内的代码:

Scanner kirill = new Scanner(System.in);

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

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

虽然不是必需的,但在将变量命名或表示之后命名变量是一个很好的做法,否则你会很快感到困惑......

答案 4 :(得分: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();

}