Java compile error: cannot find symbol [duplicate]

2019-01-25 03:33发布

问题:

This question already has an answer here:

  • What does a “Cannot find symbol” compilation error mean? 11 answers

Hey I'm just starting my first programming book on java so this should be an easy fix. Messing around with my fresh knowledge of conditionals and I'm getting the title error.

Here's the code:

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." );
    }
}

When I try to compile:

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



symbol: variable input
location: class Music
1 error

回答1:

The error message is telling you that your variable 'input' doesn't exist in your scope. You probably want to use your Scanner object, but you named it 'x', not 'input'.

Scanner input = new Scanner( System.in );

Should fix it.



回答2:

You have not defined the variable input here. You should have:

Scanner input = new Scanner( System.in );


回答3:

You used the variable input, as in

y=input.nextInt();

You can't do this, because it's not a variable. I believe you meant for it to be "x", or you could replace

Scanner x = new Scanner( System.in );

with

Scanner input = new Scanner( System.in );


回答4:

Alternatively, you could just change:

y = input.nextInt();

To:

y = x.nextInt();

Then it will work.

This is because input is not defined anywhere in the code. The provided code suggests that you expect it to be an instance of the Scanner class. But the instance of Scanner class is actually defined as x and not input.



回答5:

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


回答6:

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

(or)

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


回答7:

this is the simple fix y = x.nextInt(); instead of y = input.nextInt();