我是Java的新手,当我编写以下代码时,我遇到了这个问题。我想从用户那里得到一个方阵,但首先我得到列数,然后我得到矩阵并处理这个问题我写了这段代码:
import java.util.Scanner;
public class A {
public static void main(String[] args) {
int n;
Scanner input = new Scanner(System.in);
n = input.nextInt();
List<List<Integer>> matrix = new ArrayList<List<Integer>>();
for (int i = 0; i < n; i++)
{
matrix.add(new ArrayList<Integer>());
for (int j = 0; j < n; j++)
{
n = input.nextInt();
matrix.get(i).add(n);
}
}
}
}
我想处理这个输入:
3
1 0 1
1 0 1
1 1 0
但是,我输入:
3<enter>
1 0 1<enter>
程序在第一个输入的行之后退出。我该如何解决?
答案 0 :(得分:0)
这应该有所帮助:
import java.util.ArrayList;
import java.util.Scanner;
public class A {
public static void main(String []args) {
int n ;
Scanner input = new Scanner(System.in);
System.out.println("Columns : ");
n = input.nextInt();
ArrayList<List<Integer>> matrix = new ArrayList<List<Integer>>();
for ( int i = 0 ; i < n ; i++ )
{
matrix.add(new List<Integer>());
for ( int j = 0 ; j < n ; j++ )
{
int t = input.nextInt();
matrix.get(i).add(t);
}
}
/* This is to check the contents of the data structure */
for ( int j = 0 ; j < n ; j ++)
{
System.out.println();
for ( int k = 0 ; k < n ; k ++)
{
System.out.print(matrix.get(j).getElement(k) + " ");
}
}
}
}
答案 1 :(得分:0)
如果您正在创建一个矩阵,就像在图表中使用一样来显示连接,并且您知道有多少将会尝试使用二维数组。
public static void main(String []args) {
int n,m ;
Scanner input = new Scanner(System.in);
n = input.nextInt();
int[][] matrix = new int[n][n];
for ( int i = 0 ; i < n ; i++ )
{ int j= 0;
while(input.hasNext() && j< matrix[].lenght)
{
m = input.nextInt();
matrix[i][j] = m;
j++
}
}
}
}
答案 2 :(得分:0)
1 请记住在需要时导入一些功能;必须明确导入java.util.Scanner
。
2 此处不需要与(Array)List
混淆;使用常规数组。
3 Scanner.nextInt()
读取整行并在开头解析int
。在这里,你需要用空格分割输入。
最终代码:
import java.util.Scanner; // note 1
import java.util.Arrays; // small utility
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt(); // load the size
int[][] matrix = new int[size][size]; // create a new array; note 2
for(int row = 0; row < size; ++row) {
String[] input = sc.nextLine().split(" "); // read a row
input = Arrays.copyOf(input, size); // pad/truncate the array
int[] processed = new int[size]; // for storing a row
for(int entry = 0; entry < size; ++entry)
processed[entry] = Integer.parseInt(input[entry]); // parse integers; note 3
matrix[row] = processed; // set the row
}
// for testing purposes:
for(int row = 0; row < size; ++row) {
for(int col = 0; col < size; ++col)
System.out.print(matrix[row][col] + " ");
System.out.println();
}
}
}