题目:求一个数组的各行的和,各列的和,两个对角数的和,并求min,max的值。
想改为:
在输入16个数时,两数之间只用空格隔开写成一行,而不用“enter”键把它们隔开,输完之后就再按“enter”就可以输出结果,如何改?谢谢.import java.io.*;
public class shuzu
{
public static void main(String args[])
{
int[][] array=new int[4][4];
int[] HangHe=new int[4];
int[] LieHe=new int[4];
int[] DuiJiaoHe=new int[2];
int max,min;
String s="";
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
s=" ";
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

                   s=br.readLine();
 //while(!(s=br.readLine()).equals("-1"))
{array[i][j]=Integer.parseInt(s);}
}catch(IOException e){}
}
}
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
               {
                int k=i;
                HangHe[k]=HangHe[k]+array[i][j]; 
   }

}
for(int j=0;j<4;j++)
{
    for(int i=0;i<4;i++)
            {
            LieHe[j]=LieHe[j]+array[i][j];
            }
        }        
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
            {
            if(i==j) DuiJiaoHe[0]=DuiJiaoHe[0]+array[i][j];
            if(i+j==3) DuiJiaoHe[1]=DuiJiaoHe[1]+array[i][j];
            } 
}
max=array[0][0];
min=array[0][0];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
            {
            if(max<array[i][j]) max=array[i][j];
            if(min>array[i][j]) min=array[i][j];
            }  
    }
  for(int p=0;p<4;p++)
  { 
  System.out.print(HangHe[p]+" ");
  }  
  System.out.println(); 
  for(int k=0;k<4;k++)
  {
  System.out.print(LieHe[k]+" ");
  }
  System.out.println();
  for(int m=0;m<2;m++)
  {
  System.out.print(DuiJiaoHe[m]+" ");
  }
  System.out.println();
  System.out.println("max="+max+";min="+min);
   }
}

解决方案 »

  1.   

    import java.io.*;
    public class ArrayDemo {
    private int size;
    private int[][] nums;
    private int min,max;

    public ArrayDemo(int size,int[]num){
    this.size = size;
    nums = new int[size][size]; for(int i=0; i<size; i++){
    for(int j=0; j<size; j++){
    nums[i][j] = num[i*size+j];
    }
    }
    }

    public void rowSum(){
    for(int i=0; i<size; i++){
    int sum = 0;
    for(int j=0; j<size; j++){
    sum += nums[i][j];
    }
    System.out.println("row["+i+"]: "+sum);
    }
    }

    public void lineSum(){
    for(int j=0; j<size; j++){
    int sum=0;
    for(int i=0; i<size; i++){
    sum += nums[i][j];
    }
    System.out.println("line["+j+"]: "+sum);
    }
    }

    public void cornerSum(){
    int sum1=0;
    int sum2=0;
    for(int i=0; i<size; i++){
    sum1+=nums[i][i];
    sum2+=nums[i][size-i-1];
    }
    System.out.println("corner sum: "+sum1+"\t"+sum2);
    }

    public static void main(String args[]){
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int size=0;
    String[]numStr;
    int[]nums=null;
    System.out.print("the size of matrix: ");
    while(true){
    try{
    String tmp = br.readLine().trim();
    size = Integer.parseInt(tmp); 
    nums = new int[size*size];
    break;
    }catch(Exception e){
    System.out.println("size error,input again:");
    }

    }

    System.out.print("input the nums in one line:");
    while(true){
    try{
    String tmp = br.readLine().trim();
    numStr = tmp.split(" +");
    if(numStr.length>=size*size){
    for(int i=0; i<size*size; i++){
    nums[i] = Integer.parseInt(numStr[i]);
    }
    break;
    }
    else
    System.out.println("numbers not enough,input again: ");
    }catch(Exception e){
    System.out.println("numbers error,input again: ");
    }

    }

    //-------------------
    new ArrayDemo(size,nums).rowSum();
    }
    }