JAVA无法从main方法中访问我的数组

时间:2016-02-02 18:58:10

标签: java arrays methods

我刚刚开始使用Java,我试图让我的一个方法从主类中读取一个数组,然后从一个文件中获取它的值。该文件只是一个前5个分数列表,名称和数字用一行分隔。我制作的方法需要检查给出的分数是否高于该地方已有的分数并替换该数量。唯一的问题是我无法从我的方法访问数组值。

这是我的代码:

public static void main(String[] args) {

    String [] nameArray = new String[5];

    int [] scoreArray = new int[5];


    File score = new File("score.txt");

    if (score.exists())
    {
        try {
            nameArray[0] = Files.readAllLines(Paths.get("score.txt")).get(0);
            nameArray[1] = Files.readAllLines(Paths.get("score.txt")).get(2);
            nameArray[2] = Files.readAllLines(Paths.get("score.txt")).get(4);
            nameArray[3] = Files.readAllLines(Paths.get("score.txt")).get(6);
            nameArray[4] = Files.readAllLines(Paths.get("score.txt")).get(8);

            scoreArray[0] = Integer.parseInt(Files.readAllLines(Paths.get("score.txt")).get(1));
            scoreArray[1] = Integer.parseInt(Files.readAllLines(Paths.get("score.txt")).get(3));
            scoreArray[2] = Integer.parseInt(Files.readAllLines(Paths.get("score.txt")).get(5));
            scoreArray[3] = Integer.parseInt(Files.readAllLines(Paths.get("score.txt")).get(7));
            scoreArray[4] = Integer.parseInt(Files.readAllLines(Paths.get("score.txt")).get(9));
        } catch (IOException ex) {
            System.out.println("FILE IO EXCEPTION");
        }
    }




    if (!score.exists())
    {

        nameArray[0] = "---";
        nameArray[1] = "---";
        nameArray[2] = "---";
        nameArray[3] = "---";
        nameArray[4] = "---";

        scoreArray[0] = 0;
        scoreArray[1] = 0;
        scoreArray[2] = 0;
        scoreArray[3] = 0;
        scoreArray[4] = 0;

        BufferedWriter outputWriter;
        try {
            outputWriter = new BufferedWriter(new FileWriter("score.txt"));
                // I am aware I could have used a loop to do this
            outputWriter.write(nameArray[0]);
            outputWriter.newLine();
            outputWriter.write(Integer.toString(scoreArray[0]));
            outputWriter.newLine();

            outputWriter.write(nameArray[1]);
            outputWriter.newLine();
            outputWriter.write(Integer.toString(scoreArray[1]));
            outputWriter.newLine();

            outputWriter.write(nameArray[2]);
            outputWriter.newLine();
            outputWriter.write(Integer.toString(scoreArray[2]));
            outputWriter.newLine();

            outputWriter.write(nameArray[3]);
            outputWriter.newLine();
            outputWriter.write(Integer.toString(scoreArray[3]));
            outputWriter.newLine();

            outputWriter.write(nameArray[4]);
            outputWriter.newLine();
            outputWriter.write(Integer.toString(scoreArray[4]));
            outputWriter.newLine();

            outputWriter.flush();
            outputWriter.close();
        } catch (IOException ex) {
            System.out.println("FILE IO EXCEPTION");
        }
    }


}


static void playerScore(String name, int score)
{
  if (score > scoreArray[0])
  {
      scoreArray[0] = score;
  }
  //etc...
}

/* static String [] getTopNames()
{

}

 static int [] getTopScores()
{

}
*/

4 个答案:

答案 0 :(得分:3)

在类中定义数组,而不是在main方法本身。

答案 1 :(得分:0)

您可以将其包含在访问数组所需的方法参数中,也可以在类的顶部定义它,以便所有组件都可以访问它。

还要考虑添加一个for循环,因为你的代码是它应该的五倍,并且使用一个简单的循环,这很容易解决。

答案 2 :(得分:0)

您需要在Class中定义Array。 所以你可以从任何地方访问它。

public static void main(String[] args) {

String [] nameArray = new String[5];

int [] scoreArray = new int[5];

这样做:

String [] nameArray = new String[5];

int [] scoreArray = new int[5];

public static void main(String[] args) {

巨星, Traxstar

答案 3 :(得分:0)

确实,在任何方法之外将其声明为类变量(但是像静态一样,这样)

public class Sorting {
    public static String [] nameArray = new String[5];

    public static void main(String[] args){
        Sorting a=new Sorting();
        a.readFile();
        nameArray=null;
    }