循环无法识别先前定义的变量

时间:2015-04-29 04:21:43

标签: java arrays

我正在制作一个猜测游戏,它将使用数组来存储所有玩家的名字和他们的猜测。我对数组很新,所以我计划将用户输入到数组中是为了让他们输入播放的人数,将其设置为变量,然后使用循环继续询问名称,直到我达到规定数量的球员所需的名称数量。但是,我遇到了循环可能是一个非常简单的问题。到目前为止,这是我的一小部分代码:

public class GuessGame {
int w = 0;
int[] Players = new int[100];
String[] PlayerNames = new String[100];
String numStart = JOptionPane.showInputDialog("How many players?");
int j = Integer.parseInt(numStart);
while (w <= j)
{
    String Name = JOptionPane.showInputDialog("What is your name?");
    PlayerNames[w] = Name;
    w++;
}

问题是,我的循环中的变量w和j出错了。错误陈述说明它无法找到类w或类j的符号。我并不打算让他们上课,我在其他项目中运行类似的代码顺便说一句,所以我真的不知道这里出了什么问题。我确定这是一件非常简单的事情,但是现在已经被困在这堵墙上一段时间了,直到我把它整理好才能真正进步。这是一个包含三个单独类的项目的一部分。这里发布的类,一个Player类和一个Tester类,这是我的主要方法。我之前用更简化的形式完成了整个工作,但现在我需要根据实际的播放器输入和数组进行调整。无论如何,测试者类应该是我的主要类。如果重要的话,我正在使用Netbeans。谢谢。以下是另外两个供参考的课程:

package GuessGame;


public class GameLauncher {
public static void main(String[] args) {
    GuessGame game = new GuessGame();
    game.startGame();
}
}

package GuessGame;
import java.util.Random;

public class Player {
int number = 0; //where guess goes
String name;
public void guess() {
    Random r = new Random();
    number = 1 + r.nextInt(21);
    System.out.println("I'm guessing " + number);

}

}

3 个答案:

答案 0 :(得分:1)

您的所有代码都需要在方法中。除了类级别的变量声明之外,您不能拥有任何其他内容。将所有这些移到一个方法中,例如public static void main(String[] args) main方法。

public class GuessGame {

public static void main (String[] args)
{    
    int w = 0;
    int[] Players = new int[100];
    String[] PlayerNames = new String[100];
    String numStart = JOptionPane.showInputDialog("How many players?");
    int j = Integer.parseInt(numStart);
    while (w <= j)
    {
        String Name = JOptionPane.showInputDialog("What is your name?");
        PlayerNames[w] = Name;
        w++;
    }
}
}

答案 1 :(得分:1)

public class GuessGame {
 public void getPlayerName()
  {
   int w = 0;
   int[] Players = new int[100];
   String[] PlayerNames = new String[100];
   String numStart = JOptionPane.showInputDialog("How many players?");
   int j = Integer.parseInt(numStart);
   while (w <= j)
    {
     String Name = JOptionPane.showInputDialog("What is your name?");
     PlayerNames[w] = Name;
     w++;
    }
   }
 public static void main (String[] args)
 {
  GuessGame gg = new GuessGame();
  g.getPlayerName();
  }}

您也可以输入方法并在main方法中执行。但是,如果在方法(局部变量)中声明任何变量,则必须初始化该变量。有关详细信息,请参阅here

答案 2 :(得分:0)

public class GuessGame 
{
    static int w = 0;
    int[] Players = new int[100];
    static String[] PlayerNames = new String[100];
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String numStart = JOptionPane.showInputDialog("How many players?");
        int j = Integer.parseInt(numStart);
        while (w <= j)
        {
            String Name = JOptionPane.showInputDialog("What is your name?");
            PlayerNames[w] = Name;
            w++;
        }
    }
}

一切都应该在除变量之外的方法中.Class是变量和方法的模板!!

相关问题