Так я просматривал это на некоторое время и не могу получить по этому вопросу ...Java 2D массива печать Выпуск
В принципе, есть TXT-файл, который входит пользователь (макс 50 строк и 20 целых чисел в каждом), и я преобразовываю это в 2D int[][]
.
Итак, если вход:
1 2 3 4 5 6
54 67 66
45
34 54 2
2D-массив должен выглядеть следующим образом:
1 2 3 4 5 6
54 67 66 0 0 0
45 0 0 0 0 0
34 54 2 0 0 0
В настоящее время я получаю следующий результат:
[1, 2, 3, 4, 5, 6, 54, 67, 66, 45, 2, 3, 34, 54, 2, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Это будет штраф, за исключением номеров, которые входят в первый ряд, чего они не должны.
Вот мой код (функции класса):
package com.company;
import java.io.File;
import java.util.Scanner;
public class Functions {
public int[][] readFile(File file) {
try {
Scanner scn = new Scanner(file);
Scanner scn2 = new Scanner(file);
//set initial count (of rows) to zero
int maxrows = 0;
//sets columns to 20 (every row has 20 integers - filled w zeros if not 20 inputted)
int maxcolumns = 20;
// goes through file and counts number of rows to set array parameters
while (scn.hasNextLine()) {
maxrows++;
scn.nextLine();
}
// create array of counted size
int[][] array = new int[maxrows][maxcolumns];
//new scanner to reset
Scanner scan1 = new Scanner(file);
//places integer one by one into array
for (int row = 0; row < maxrows; row++)
for (int column = 0; column < maxcolumns; column++) {
if (scan1.hasNext())
array[row][column] = scan1.nextInt();
else {
break;
}
}
return array;
}
// general exception
catch(Exception e){
System.out.println("PROBLEM");
e.printStackTrace();
//returns null array
return null;
}
}
}
Главный класс:
package com.company;
import java.io.*;
import java.io.IOException;
import java.util.Arrays;
import java.io.File;
public class Main {
public static void main(String[] args) throws IOException {
//Creates new class2 object
Functions o = new Functions();
//Creates new file object
File file = new File("src/com/company/UserInput");
//Takes in file object as parameter
int[][] array = o.readFile(file);
//prints as an array
for (int i=0; i < array.length; i++)
System.out.println(Arrays.toString(array[i]));
}
}
why' 2 0 0 0 0 0'? –
Подсказка: не используйте статическую сеть для проверки кода. Узнайте о Junit; и написать единичные тесты. – GhostCat
@FastSnail Спасибо, что поймали это! Это была всего лишь типография. Раньше у меня был другой массив. –