#java
#java
Вопрос:
Здравствуйте, у меня есть файл с информацией в формате
5.1,3.5,1.4,0.2,Iris-setosa
Каждая строка содержит 4 числа и одну строку, всего 75 строк. Я пытаюсь сохранить числа в 2D-массив, а затем строку в ее собственный 1D-массив. Но у меня возникли проблемы с преобразованием из имеющегося у меня массива строк в 2D-массив с двойным значением
...
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class NearestNeighbor {
public static void main(String[] args) throws FileNotFoundException {
//creates empty values for our arrays
double [][] testingVal= new double[75][4];
double[][] trainingVal= new double[75][4];
String [] trainingClassLabel = new String [75];
String [] testingClassLabel = new String [75];
//User inputs for file names
Scanner input = new Scanner(System.in);
System.out.print("Enter the name of the training file: ");
String training=input.nextLine();
System.out.print("Enter the name of the testing file: ");
String testing=input.nextLine();
//creates array for our training values
File trainingFile = new File(training);
Scanner fileScanTraining = new Scanner(trainingFile);
for (int i = 1; fileScanTraining.hasNext(); i ) {
String line = fileScanTraining.nextLine();
trainingVal=line.split(",",4);
System.out.println(line);
}
//creates array for our testing values
File testingFile = new File(testing);
Scanner fileScanTesting = new Scanner(trainingFile);
//Finally we close our scanners
fileScanTraining.close();
fileScanTesting.close();
input.close();
}
}
...
Комментарии:
1. «[H] устранение неполадок» охватывает много вопросов. Можете ли вы более точно указать, с какой проблемой вы столкнулись?
2. Преобразование моего массива строк в 2D-массив. Я не знаю, какой средний шаг мне нужен, чтобы иметь возможность это сделать
3. ПОДСКАЗКИ:
String[] data = line.split(",");
и (во вложенном цикле for)testingVal[i][j] = Double.parseDouble(data[j]);
. Это как-нибудь помогает?
Ответ №1:
Вам просто нужно внести пару изменений в цикл, в котором вы читаете содержимое trainingFile
.
Scanner fileScanTraining = new Scanner(trainingFile);
for (int i = 1; fileScanTraining.hasNextLine(); i ) { // changed this line
String line = fileScanTraining.nextLine();
String[] numbers = line.split(",", 4); // added this line
for (int j = 0; j < 4; j ) { // added this loop
trainingVal[i][j] = Double.parseDouble(numbers[j]);
}
System.out.println(line);
}
Ответ №2:
Можно использовать простой цикл, как показано ниже —
int i=0;
while (fileScanTraining.hasNext()){
String line = fileScanTraining.nextLine();
String[] splittedVal=line.split(",");
int j=0;
while(j< 4){
testingVal[i][j]=Double.parseDouble(splittedVal[j]);
j ;
}
i ;
}