я следующую маленькую проблему ... У меня есть этот код, использующий метод OpenFile()
одного класса ReadData
читать .txt
файл, а также у меня есть еще один класс ArraysTZones
используется для создания объекта, который хранит 3 массивы (data1, data2, data3) и 3 целые числа (total1, total2, total3), возвращаемые методом OpenFile()
. Проблема в том, что когда я пытаюсь отобразить каждый массив (data1, data2, data3), используя метод getArray() из ArrayTZones, он останавливается и отображает ошибку NullPointerException
. Кто-нибудь знает, как я могу это исправить?Массив бросает NullPointerException в Java
public static void main (String args[]) throws IOException {
String fileName = ".//data.txt";
int[] def = new int[180];
try {
ReadData file = new ReadData(fileName);
ArraysTZones summaryatz = new ArraysTZones();
summaryatz = file.OpenFile();
for (int i = 0; i < 180; i++)
System.out.print (summaryatz.getArray1()[i] + " ");
System.out.println ("");
System.out.println (summaryatz.getTotal1());
for (int i = 0; i < 180; i++)
System.out.print (summaryatz.getArray2()[i] + " ");
System.out.println ("");
System.out.println (summaryatz.getTotal2());
for (int i = 0; i < 180; i++)
System.out.print (summaryatz.getArray3()[i] + " ");
System.out.println ("");
System.out.println (summaryatz.getTotal3());
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}
Heres OpenFile()
public ArraysTZones OpenFile() throws IOException {
FileReader reader = new FileReader(path);
BufferedReader textReader = new BufferedReader(reader);
int numberOfTimeZones = 3;
int[] data1 = new int[180];
int[] data2 = new int[180];
int[] data3 = new int[180];
int total1 = 0;
int total2 = 0;
int total3 = 0;
ArraysTZones atz = new ArraysTZones();
for (int i = 0; i < numberOfTimeZones; i++){
if (i == 0) {
String firstTimeZone = textReader.readLine();
String[] val = firstTimeZone.split ("\\s+");
for (int u = 0; u < val.length; u++)
{
int stats = (int)(Math.ceil(Math.abs(Double.parseDouble(val[u]))));
total1 += stats;
data1[u] = stats;
}
total1= total1/180;
atz.setTotal1(total1);
atz.setArray1(data1);
}
else
if (i == 1) {
String secondTimeZone = textReader.readLine();
String[] val = secondTimeZone.split ("\\s+");
for (int u = 0; u < val.length; u++)
{
int stats = (int)(Math.ceil(Math.abs(Double.parseDouble(val[u]))));
total2 += stats;
data2[u] = stats;
}
total2= total2/180;
atz.setTotal2(total2);
atz.setArray2(data2);
}
else {
String thirdTimeZone = textReader.readLine();
String[] val = thirdTimeZone.split ("\\s+");
for (int u = 0; u < val.length; u++)
{
int stats = (int)(Math.ceil(Math.abs(Double.parseDouble(val[u]))));
total3 += stats;
data3[u] = stats;
}
total3= total3/180;
atz.setTotal3(total3);
atz.setArray3(data3);
}
}
textReader.close();
return atz;
}
GetArray()
public int[] getArray1() {
return data1;
}
И setArray()
public void setArray1 (int[] farray) {
int[] data1 = new int[180];
//int[] farray = new int[180];
data1 = farray;
}
Не смотря на остальную часть вашего кода, для 'getArray()' и, возможно, ваших 'OpenFile()' методов/классов, мы можем только рассуждать о причине. Также было бы полезно исключение, так как это должно точно указать, где именно возникает проблема. –
Мое предположение заключается в том, что методы 'getArray_' возвращают' null'. – khelwood
попробуйте отладить ваш код. вы увидите, какая переменная имеет значение null. и при отладке не используйте возвращенный массив напрямую, как в вашем коде summaryatz.getArray1() [i]. используйте его следующим образом: for (...) {int arr [] = summaryatz.getArray1(); System.out.println (обр [я]); } – Adem