java中不规则数组初始化

目前遇到的一个问题

1、输入n

2、根据n输入n行,每一行的长度会变,但每一行都一定是数字和空格组成的

3、要求用数组b[n][?]装载这些数

解决方案:

1.根据n初始化b

int[][] b=new int[n][];

2.根据空格进行分裂,用新的String数组装载分裂得到的数

String[]c1=c[j].split(" ");

3.对于第j行的b,初始化长度为c1.length,即,b[n][c1.length];

然后再用Integer.parseInt(str)将字符串str转化成数字,如"18"转化为18;

然后用b[j][k]去装载这个数字

扫描二维码关注公众号,回复: 2544947 查看本文章
 b[j]=new int [c1.length];
 for(String e:c1)b[j][k++]=Integer.parseInt(e);

这里需要注意的是,用in.nextInt()得到的数字,再去用in.nextline()得到每一行,是需要先用in.nextline()吃掉换行符。不过这种吃只用吃一次就好了,这是因为in.nextInt()没有吃好换行符。

最后附上做题时的代码

package bag;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;

abstract class Person{
    int sum=0;
    public Person(){sum=0;}
    abstract int average_number();
    abstract void print();
}
class Student extends Person{
    public Student(int[] num){
        for(int i:num)sum+=i;
    }
    int average_number(){
        return sum/3;
    }
    void print(){
        System.out.println("Student "+average_number());
    }
}
class Teacher extends Person{
    public Teacher(int[] num){
        for(int i:num)sum+=i;
    }
    int average_number(){
        return sum/4;
    }
    void print(){
        System.out.println("Teacher "+average_number());
    }
}
public class Main {

    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        String[] c=new String[n];
        int i=0;
        //nextInt无法忽略换行符,但nextline可以忽略换行符,
        // 即一行结束后不会理睬后面的换行符
        String unuse=in.nextLine();
        while(n-->0){
            c[i++]=in.nextLine();
        }
        //不规则矩阵初始化
        int[][] b=new int[i][];
//        int[][] b=new int[2][4];
        for(int j=0;j<i;j++)
        {
            int k=0;
            String[]c1=c[j].split(" ");
            b[j]=new int [c1.length];
            for(String e:c1)b[j][k++]=Integer.parseInt(e);
        }
        for(int m=0;m<b.length;m++)
        if(b[m].length==3){
            Student a=new Student(b[m]);
            a.print();
        }
        else {
            Teacher a=new Teacher(b[m]);
            a.print();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/hgtjcxy/article/details/81383491