#java #arrays
#java #массивы
Вопрос:
Я пытаюсь прочитать двойные значения из файла и поместить их в массив.Я создал два массива.Первый double будет находиться в первом массиве, а второй — во втором массиве, третий в первом и так далее… Но я должен использовать отдельный класс для этой цели (для хранения массивов).
Вот код, который должен просить пользователя выбрать файл, который следует прочитать, а затем поместить двойные значения в массивы, но он не работает, и я не знаю почему…
package projectApplicationDevelopment;
import java.util.Arrays;
import java.util.Scanner;
import ui.UIAuxiliaryMethods;
public class NumRow {
static int i=0;
public NumRow() {
UIAuxiliaryMethods.askUserForInput();
}
public NumRow(int numOfElementsOfDataSet) {
this.i=numOfElementsOfDataSet;
}
static double fat=0;
static double protien=0;
static double [] fatContent=new double[i];
static double [] protienContent=new double[i];
static void storeDoublesAndPrintMaxMin() {
Scanner in=new Scanner(System.in);
int counter=0;
while(in.hasNext()) {
fat=in.nextDouble();
protien=in.nextDouble();
fatContent[counter]=fat;
protienContent[counter]=protien;
counter ;
}
Arrays.sort(fatContent);
double max_fat = fatContent[fatContent.length - 1];
double min_fat = fatContent[0];
Arrays.sort(protienContent);
double max_Protien = protienContent[protienContent.length - 1];
double min_Protien = protienContent[0];
System.out.println("The maximum fat in this file was" max_fat);
System.out.println("The minimum fat in this file was" min_fat);
System.out.println("The maximum Protien in this file was" max_Protien);
System.out.println("The maximum Protien in this file was" min_Protien);
}
Также предполагается выводить максимальные и минимальные значения массива.
Я новичок в Java, поэтому понимаю, что мой код может показаться вам глупым.
Спасибо и помощь высоко ценятся.
Комментарии:
1. пожалуйста, определите «это не работает»! Какие сообщения об ошибках или нежелательные выходные данные вы получаете?
2. Вот что я получаю: «Исключение в потоке «main» java.lang. Исключение ArrayIndexOutOfBoundsException: -1 в projectApplicationDevelopment.NumRow.storeDoublesAndPrintMaxMin(NumRow.java:34) в projectApplicationDevelopment. Вызов CLASS.start(CallingClass.java:21) в projectApplicationDevelopment. Вызов CLASS.main(CallingClass.java:26)» Я вызываю этот класс из своего основного класса, используя «NumRow.storeDoublesAndPrintMaxMin();»
3. Какой код в
NumRow
строке 34? Вы получитеArrayIndexOutOfBoundsException
, если вы погуглите, вы увидите, что вы указываете индекс вне границ для и массива. Soint[] a=new int[2]
->int[4]
вызывает исключение.
Ответ №1:
Проблема в том, что вы объявили i
как 0, а затем выполняете
static double [] fatContent=new double[i];
static double [] protienContent=new double[i];
это не Excel, реальная длина или ваш массив равен 0.
Вы можете инициализировать его в конструкторе.
public NumRow(int numOfElementsOfDataSet) {
this.i=numOfElementsOfDataSet;
fatContent=new double[i];
protienContent=new double[i];
}
Комментарии:
1. Большое спасибо за вашу помощь…. Это работает, хотя показывает значение man и min 0.0, но я разберусь… Спасибо.
Ответ №2:
import ui.UIAuxiliaryMethods;
В этой строке вы пытаетесь использовать класс с именем ‘ui’. У вас есть этот класс? Если это так, пожалуйста, покажите нам код для этого. Является ли ‘ui’ частью библиотеки, которую вы хотите использовать, или это класс, который вы написали сами?
UIAuxiliaryMethods.askUserForInput();
Эта строка означает, что вы пытаетесь использовать класс с именем ‘UIAuxiliaryMethods’. У вас есть этот класс? Если это так, пожалуйста, покажите нам код для этого. Является ли ‘UIAuxiliaryMethods’ частью библиотеки, которую вы хотите использовать, или это класс, который вы написали сами?
Комментарии:
1. UIAuxiliaryMehods.askUserForInput(); включен в файл jar, который мне был предоставлен, и я экспортировал. Я не уверен, как показать вам код этого класса, потому что он встроен в библиотеку, которую я экспортировал. Он в основном запрашивает входной файл.
2. Не могли бы вы связать используемые вами банки, пожалуйста? Или вы можете сообщить нам название библиотеки? Нам легче отлаживать проекты, если мы можем скомпилировать код. Избавляет нас от необходимости вручную определять, в каких строках возникают ошибки, например. Хорошо иметь SSCCE: если вы упростите людям, читающим ваш вопрос, я думаю, у вас больше шансов получить ответ.
3. Спасибо @Goerge, но я просто пытаюсь выяснить, как загрузить библиотеку или прикрепить файл к вопросу, который я опубликовал…. Если у вас есть какие-либо идеи… Помощь будет оценена.. Спасибо
4. ОК. Спасибо. Опубликованная вами ссылка работает, хотя у вас все еще нет SSCCE здесь, но, похоже, на вопрос все равно был дан ответ.
5. Большое спасибо @George за вашу помощь …. 🙂 Я получил ответ… Спасибо, что пытались мне помочь…