代码中的错误

时间:2015-10-20 11:10:00

标签: java variables

我是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:

4 个答案:

答案 0 :(得分:2)

您的代码存在以下问题:

  1. if ( result == myNumber );最后的;会导致if语句的空体。这就是为什么在没有else的情况下if收到错误的原因。删除;
  2. result未在您的代码中定义
  3. 您正在将String变量与==进行比较。如果引用相同,那将进行比较。如果您想比较String使用

    的内容
    if (result.equals(myNumber))
    
  4. 您似乎缺少读取用户输入的部分。它看起来像

    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。我发现当你需要在括号已经存在时将多个语句添加到这样的分支时,它不易出错。