我需要帮助将整数读入N x N维的2D方阵。
例如,如果用户输入为:
123
333
414
然后我需要一个数组:
{
{1, 2, 3},
{3, 3, 3},
{4, 1, 4}
}
我遇到的问题是这些整数之间没有空格。如果有空间,我可以做
for (int i = 0 ; i < N; i++) {
for(int j = 0; j < N ; j++) {
myArray[i][j] = scan.nextInt();
}
}
我通过尝试使用子串并将其解析到数组中来解决这个问题,尽管我没有得到任何结果。
另一种方法(编辑)
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
myArray[i][j] = Integer.parseInt(scan.nextLine().substring(j, j+1));
}
}
这也不起作用 - 它在输入三行后继续运行。
答案 0 :(得分:1)
也许这会有所帮助:
public static void main( String[] args ) {
Scanner scanner = new Scanner( System.in );
int[][] array = new int[3][3];
for ( int[] ints : array ) {
char[] line = scanner.nextLine().toCharArray();
for ( int i = 0; i < line.length; i++ ) {
ints[i] = Character.getNumericValue( line[i] );
}
}
Arrays.stream( array ).forEach( x -> System.out.println( Arrays.toString( x ) ) );
}
还有Java 8
public static void main( String[] args ) {
Scanner scanner = new Scanner( System.in );
int[][] array = new int[3][3];
for ( int[] ints : array ) {
ints = scanner.nextLine().chars().map( Character::getNumericValue ).toArray();
}
Arrays.stream( array ).forEach( x -> System.out.println( Arrays.toString( x ) ) );
}
答案 1 :(得分:0)
原因是java扫描程序将整数(例如:123)作为一个数字。
for (int i = 0 ; i < N; i++) {
int p = scan.nextInt();
for (int j = N-1; j >= 0; j--) {
array[i][j] = p % 10;
p = p / 10;
}
}