我不想使用Java接口的ArrayList集合或任何其他库 我在控制台上打印时遇到问题。输入效果很好
import java.lang.*;
import java.util.*;
class Triangle{
public static int n;
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int i, j, cases;
int[][] values = new int[100][100];
cases = in.nextInt();
while(cases-- > 0){
n = in.nextInt();
int temp;
for(i=0 ; i<n ; i++){
for(j=0 ; j<=i ; j++){
values[i][j] = in.nextInt();
}
}
}
large(values);
}
public static void large(int[][] arr){
for(int i = 0 ; i<n ; i++){
for(int j=i ; j<i ; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
答案 0 :(得分:2)
你的问题从这里开始:
public static void large(int[][] arr){
for(int i = 0 ; i<n ; i++){
是什么让您认为用户输入的最后一个 n 反映了数组的边界?
换句话说:您将阵列定义为100 x 100;阵列本身也知道它们的大小;所以你只需要去
for(int i=0; i < arr.length; i++) {
for (int j=0; j < arr[i].length; j++) {
请注意:您应该考虑重写您的“输入”方法。截至目前,该代码高度令人困惑;循环风格很奇怪;并且如上所述:防止超出阵列限制的良好保护......看起来与你放下的不同!
答案 1 :(得分:1)
如果你想要打印所有数组,你需要用0开始每个索引,在你的代码中你用i开始你的第二个循环,你忘了将每个条目添加到总和
public static void large(int[][] arr){
for(int i = 0 ; i<n ; i++){
for(int j=0 ; j<i ; j++){
System.out.print(arr[i][j]);
sum+=arr[i][j];
}
System.out.println();
}
System.out.println(sum);
}