Java编译错误:找不到符号

嘿,我刚刚开始编写关于java的第一本编程书,所以这应该是一个简单的解决方案。 用我对条件语的新知识搞清楚,我得到了标题错误。

这是代码:

import java.util.Scanner; public class Music { public static void main( String[] args ) { Scanner x = new Scanner( System.in ); int y; System.out.print( "Which is better, rap or metal? 1 for rap, 2 for metal, 3 for neither" ); y = input.nextInt(); if ( y == 1 ) System.out.print( "Someone hasn't heard\nhttp://www.youtube.com/watch?v=Vzbc4mxm430\nyet" ); if ( y == 2 ) System.out.print( "Someone hasn't heard\nhttp://www.youtube.com/watch?v=s4l7bmTJ7j8\nyet" ); if ( y == 3 ) System.out.print( "=/ \nMusic sucks anyway." ); } } 

当我尝试编译时:

 Music.java:13: error: cannot find symbol y = input.nextInt(); symbol: variable input location: class Music 1 error 

错误消息告诉您示波器中不存在变量“input”。 您可能想要使用您的Scanner对象,但您将其命名为“x”,而不是“输入”。

 Scanner input = new Scanner( System.in ); 

应该解决它。

您尚未在此处定义变量input 。 你应该有:

 Scanner input = new Scanner( System.in ); 

您使用了变量输入,如

 y=input.nextInt(); 

你不能这样做,因为它不是变量。 我相信你的意思是它是“x”,或者你可以替换它

 Scanner x = new Scanner( System.in ); 

 Scanner input = new Scanner( System.in ); 

或者,你可以改变:

 y = input.nextInt(); 

至:

 y = x.nextInt(); 

然后它会工作。

这是因为input未在代码中的任何位置定义。 提供的代码表明您希望它是Scanner类的实例。 但Scanner类的实例实际上定义为x而不是input

  Scanner x = new Scanner( System.in ); int y = x.nextInt(); 
 Scanner input = new Scanner( System.in ); int y = input.nextInt(); 

(要么)

 Scanner x = new Scanner( System.in ); int y = x.nextInt(); 

这是简单的修复y = x.nextInt(); 而不是y = input.nextInt();