Java 我想在一个方法中决定数组大小,但是我的数组需要是公共的。。。我该怎么做?

Java 我想在一个方法中决定数组大小,但是我的数组需要是公共的。。。我该怎么做?,java,arrays,Java,Arrays,目前,阵列大小仅为0。如何更改它以使我的数组保持公共,但可以在方法中更改数组的大小?阵列需要是公共的,因为它必须通过其他方法访问 public class Array { public int sizeArray; public String mainArray [] = new String [sizeArray]; public String halfArray[] = new String [sizeArray/2]; public void arraySizeManipulat

目前,阵列大小仅为0。如何更改它以使我的数组保持公共,但可以在方法中更改数组的大小?阵列需要是公共的,因为它必须通过其他方法访问

public class Array {

public int sizeArray;

public String mainArray [] = new String [sizeArray];

 public String halfArray[] = new String [sizeArray/2];

public void arraySizeManipulate () {

String line = ""; 

int x = -1;

try {
  BufferedReader r = new BufferedReader (new FileReader("File.txt"));
  while (line != null)
  {
    line = r.readLine ();
    x++;
  }
  r.close ();
}
catch (IOException e)
{
  System.out.println (e);
}
sizeArray = x;
}
}

这是您需要的代码

    public class Array {

    public int sizeArray;
    //we will not declare the array right at this point because we don't know the file size or in general the value of sizeArray varable.
    public String mainArray [] ;

     public String halfArray[] ;

    public void arraySizeManipulate () {

    String line = ""; 

    int x = -1;

    try {
      BufferedReader r = new BufferedReader (new FileReader("File.txt"));
      while (line != null)
      {
        line = r.readLine ();
        x++;
      }
      r.close ();
    }
    catch (IOException e)
    {
      System.out.println (e);
    }
  //here x contains the  no of lines in the file 
 sizeArray = x;
//now global array get declared using the variable  size array.
 mainArray=new String[sizeArray];
    halfArray = new String [sizeArray/2];

    }
    }

类的简单版本,通过遵循Java标准,您不应该创建公共字段,而应该使用私有字段的getter和setter。为简单起见,我接受构造函数中的大小,并展示了如何为mainarray执行此操作


考虑正确地格式化代码。至少这可以对你的问题有所启发。@OusmaneMahyDiaw我对这个问题不太熟悉,所以我不确定它的格式。不管怎样,它正在编辑中,没关系。1:不,任何字段都不应该是公共的,但它与2无关。在知道数组的大小之后,而不是在方法中之前初始化数组。@Sandy我认为您需要更改数组大小,因为您想将文件内容存储到该数组中。这是真的吗?欢迎使用堆栈溢出!虽然您可能已经解决了该用户的问题,但仅使用代码的答案对将来遇到此问题的用户没有多大帮助。请编辑您的答案,解释为什么您的代码解决了原始问题。@JoeC我编辑了我的答案,希望它能帮助其他人
public class ArraySo {

    private int sizeArray;

    ArraySo(int sizeArray){
        this.sizeArray = sizeArray;
    }

    private String mainArray [];// = new String [sizeArray];

    private String halfArray[]; //// = new String [sizeArray/2];

    public String[] getMainArray(){
        return mainArray = new String [sizeArray];
    }


    public static void main(String[] args) {
        ArraySo arraySo = new ArraySo(10);
        System.out.println(arraySo.getMainArray().length);
        //System.out.println(arraySo.halfArray.length);
    }

}