我是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]
答案 0 :(得分:5)
if (kirill.equals(kirill2)){
kirill
是Scanner
对象,而不是字符串。尝试这样的事情:
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
的小问题。您试图将Scanner
与String
匹配。你不能那么傻!
答案 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();
}