我是Java的100%新手,目前我正在做一门课程。我正在做一个模拟程序,根据预定义的代码测试用户输入。一个密码(程序丢失的数字),但我遇到困难(见下文)任何帮助将不胜感激。我得到的主要错误是使用if else语句......
import java.util.Scanner;
public class Lost
{
public static void main( String[] args )
{
String myNumber;
myNumber = "4815162342" ;
// create Scanner to obtain input from command window
Scanner input = new Scanner( System.in );
// prompt user for input and obtain value from user
System.out.print( "Enter numbers..." );
// if...else is nested
if ( result == myNumber );
// if result numbers,
System.out.print( "...You've just saved the world for now!!" );
else
System.out.print( "BOOM!!!!" );
} // end main
} // end class Lost
// put notes here:
答案 0 :(得分:2)
您的代码存在以下问题:
if ( result == myNumber );
最后的;
会导致if语句的空体。这就是为什么在没有else
的情况下if
收到错误的原因。删除;
result
未在您的代码中定义您正在将String
变量与==
进行比较。如果引用相同,那将进行比较。如果您想比较String
使用
if (result.equals(myNumber))
您似乎缺少读取用户输入的部分。它看起来像
String result = "";
if (input.hasNextLine())
result = input.nextLine();
答案 1 :(得分:1)
将代码更改为
import java.util.Scanner;
public class Lost {
public static void main(String[] args) {
// TODO Auto-generated method stub
String myNumber;
myNumber = "4815162342" ;
// create Scanner to obtain input from command window
System.out.print( "Enter numbers..." );
Scanner input = new Scanner( System.in );
String result = input.next();
// prompt user for input and obtain value from user
// if...else is nested
if ( result.equals(myNumber) )
// if result numbers,
System.out.print( "...You've just saved the world for now!!" );
else
System.out.print( "BOOM!!!!" );
}
}
答案 2 :(得分:1)
这是你可以做的:
import java.util.Scanner;
public class Lost
{
public static void main( String[] args )
{
String myNumber = "4815162342";
Scanner scn= new Scanner(System.in);
System.out.print("Enter numbers...");
String result = scn.nextLine(); //receive input with string (Line 10)
if (result.equals(myNumber)) //compare strings (input vs myNumber)
System.out.println("...You've just saved the world for now!!");
else
System.out.println("BOOM!!!!");
}
}
如果您选择接收带整数的输入数字,您将在 第10行 中使用scn.nextInt()
或Integer.parseInt(scn.nextLine())
,并进行比较针对muNumber的结果将是(result == myNumber)
而不是result.equals(myNumber)
。
截至目前,为了您的基本理解,在比较诸如int之类的基元时,您使用==
。比较对象和字符串时,请使用.equals()
。
答案 3 :(得分:0)
摆脱以下一行后面的分号:
if ( result == myNumber );
您可能还想习惯用花括号括起单语句ifs。我发现当你需要在括号已经存在时将多个语句添加到这样的分支时,它不易出错。