变量声明错误 - 重复的局部变量

时间:2018-06-17 21:17:45

标签: java

人,我是java新手,几周前才开始。我正在尝试制作一个猜谜游戏程序,您必须猜测1到100之间的数字,并且存在问题。

代码:

import java.util.Scanner;
import java.util.Random;

public class CODE {

    public static void main(String[] args) {
        Random rand = new Random();
        int n = rand.nextInt(100) + 1;
        Scanner input = new Scanner(System.in);

        System.out.println(n);
        System.out.println("Lets play a guessing game! You try to guess the number I am thinking \n");
        System.out.println("Guess a number between 1 to 100! ");

        String inputLine = input.nextLine();
        int line = Integer.parseInt(inputLine);

        boolean gotIt;
        gotIt = false;
        while(gotIt == false) {
            if (n < line) {
                System.out.println("Go Lower");
                String inputLine = input.nextLine();
                line = Integer.parseInt(inputLine);
            }
            if (n > line) {
                System.out.println("Go Higher");
                String inputLine = input.nextLine();
                line = Integer.parseInt(inputLine);
            }
            if (line == n) {
                System.out.println("You guessed my number!!!");
                gotIt = true;
                break;
            }
        }   
    }
}

然后它给我一个错误说:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Duplicate local variable inputLine
    Duplicate local variable inputLine

    at CODE.main(CODE.java:23)

任何帮助?

2 个答案:

答案 0 :(得分:3)

错误非常自我解释,这意味着您将变量inputLine声明两次。

使用String variableName声明变量后,您无法再次执行此操作,只需要使用variableName引用创建的变量,以便将内存中的引用覆盖为新值。 / p>

喜欢:

public class CODE {

public static void main(String[] args) {
    Random rand = new Random();
    int n = rand.nextInt(100) + 1;
    Scanner input = new Scanner(System.in);

    System.out.println(n);
    System.out.println("Lets play a guessing game! You try to guess the number I am thinking \n");
    System.out.println("Guess a number between 1 to 100! ");

    String inputLine = input.nextLine();
    int line = Integer.parseInt(inputLine);

    boolean gotIt;
    gotIt=false;
    while(gotIt==false) {
        if (n<line) {
            System.out.println("Go Lower");
            inputLine = input.nextLine();
            line = Integer.parseInt(inputLine);
        }
        if (n>line) {
            System.out.println("Go Higher");
            inputLine = input.nextLine();
            line = Integer.parseInt(inputLine);
        }
        if (line==n) {
            System.out.println("You guessed my number!!!");
            gotIt=true;
            break;
        }
    }

}

答案 1 :(得分:1)

该行

String inputLine = input.nextLine();

实际上做了三件事。它

  • 创建(或“声明”)名为inputLine
  • 的变量
  • 从名为Scanner的{​​{1}}
  • 中读取一行
  • 将读取的行分配给变量input

第一次使用它时非常棒。但是后来,如果你重复这一行,你实际上是在尝试创建一个与现有变量同名的新变量。

而不是重复行

inputLine

稍后,只需写下

String inputLine = input.nextLine(); 

将从inputLine = input.nextLine(); 读取一行并将其分配给Scanner,而不尝试创建全新的变量。