Java 我如何将一个由12人组成的数组排序为一个由4个家庭组成的较小数组?

Java 我如何将一个由12人组成的数组排序为一个由4个家庭组成的较小数组?,java,arrays,Java,Arrays,我如何将一个包含12个人及其收入的数组放入一个更小的数组中,其中包括4个家庭及其总收入?这就是我目前所拥有的 public class Assignment7Sasha { public static void main(String[] args)throws IOException { String lname[] = new String[12]; String fname[] = new String[12]; double income[] = new int

我如何将一个包含12个人及其收入的数组放入一个更小的数组中,其中包括4个家庭及其总收入?这就是我目前所拥有的

public class Assignment7Sasha
{
  public static void main(String[] args)throws IOException
  {
   String lname[] = new String[12];
   String fname[] = new String[12];
   double income[] = new int[12];
   int deductions;
   int i;
   double taxrate;
   double familytax;
   double familyincome;
   double adjustedfamilyincome;
   PrintWriter outfile = null;  
  outfile = new PrintWriter
          (new FileOutputStream("Prog7Results"));//Results are the last names sorted into 4 different families 
    Scanner infile=new Scanner(new FileInputStream("Prog7FamilyInfo.dat"));
 for( i=0;i<12; i++)
  {
   lname[i] = infile.next();
   fname[i] = infile.next();
   income[i] = infile.nextInt();
 }
 for(i=0; i<12; i++)
     outfile.println(lname[i] + "\t"+ fname[i] + "\t"+income[i]);
    //object is created and the constructor is invoked
    Assignment7Sorting nm = new (lname, income, outfile);

nm.sort();
 outfile.println("The sorted list of families and their adjusted incomes is:");
    for(i=0; i<4; i++)
      outfile.println(lname[i]+ " " + adjustedfamilyincome[i] + " " + familytax[i]);
    infile.close();
    outfile.close();
 }
}
公共类分配7sasha
{
公共静态void main(字符串[]args)引发IOException
{
字符串lname[]=新字符串[12];
字符串fname[]=新字符串[12];
双收入[]=新国际[12];
整数扣减;
int i;
双重税率;
双重家庭税;
双倍家庭收入;
双重调整家庭收入;
PrintWriter输出文件=null;
outfile=新的PrintWriter
(新的FileOutputStream(“Prog7Results”);//结果是按4个不同族排序的姓氏
Scanner infle=新扫描仪(新文件输入流(“Prog7FamilyInfo.dat”);

因为(i=0;i你的问题很模糊,所以我会根据你提供的信息来回答

您可以创建一个静态类来保存每个家庭可能需要的收入、姓氏和其他属性。您可以使用ArrayList来维护此类对象的动态列表,并使用迭代器对象遍历该列表

public class Assignment7Sasha{
    private static final class Family{
        String lname;
        int income;
    }

    public static void main(String[] args){
        //All variable declarations
        ArrayList families = new ArrayList<Family>();

        //Read into arrays lname, fname and income as you have done

        for(int i = 0; i < 12; i++){
            boolean exists = false;
            Iterator it = families.iterator();
            while(it.hasNext()){     //Check if lname[i] already exists in families
                Family f = (Family)it.next();
                if(f.lname.equals(lname[i])){   //If lname[i] already exists
                    f.income += income[i];
                    exists = true;
                    break;
                }
            }
            if(!exists){     //If lname[i] doesn't exist
                Family f = new Family();
                f.lname = lname[i];
                f.income = income[i];
                families.add(f);
            }
        }

        Iterator it = families.iterator();
        while(it.hasNext()){
            Family f = (Family)it.next();
            //Handle each Family object however you want
            System.out.println("Family:" + f.lname + " Income:" + f.income);
        }
    }
公共类分配7sasha{
私有静态最终类族{
字符串名称;
国际贸易收入;
}
公共静态void main(字符串[]args){
//所有变量声明
ArrayList族=新的ArrayList();
//按照您所做的步骤读入数组lname、fname和income
对于(int i=0;i<12;i++){
布尔存在=假;
迭代器it=families.Iterator();
while(it.hasNext()){//检查lname[i]是否已存在于族中
Family f=(Family)it.next();
if(f.lname.equals(lname[i]){//如果lname[i]已经存在
f、 收入+=收入[i];
存在=真;
打破
}
}
如果(!exists){//如果lname[i]不存在
族f=新族();
f、 lname=lname[i];
f、 收入=收入[i];
增加(f);
}
}
迭代器it=families.Iterator();
while(it.hasNext()){
Family f=(Family)it.next();
//根据需要处理每个族对象
System.out.println(“家庭:+f.lname+”收入:+f.Income”);
}
}

您希望新数组包含什么?Java是一种面向对象的语言。使用它。创建一个类来存储
人的值。回答您的问题:“如何获取包含12人的数组?”首先,你只有一个数组,而不是三个。这样你就可以对它进行排序。对不起,你的问题没有意义。你不能将12个事物“排序”为4个事物。你可以将12个事物“排序”为4堆事物,但“排序”一词的含义与我们在其中使用的含义不同。(该操作的正确词是“排序”。)要在这方面取得进展,您需要1)重新阅读要求,2)确保您真正理解要求,3)用清晰的英语向我们解释要求…而不是无法传达真实含义的口语英语。(是的,清晰的沟通在其中非常重要。)我怀疑,如果你执行步骤1)和2),你会发现步骤3)是不必要的;也就是说,你将对你应该做的事情有更深入的了解,并且你将能够在没有我们帮助的情况下取得进展。@SaurabhShirodkar列表中的一些人的姓氏相同。使用infle(这是12个人及其收入的列表)我需要将每个家庭及其总收入打印到outfile(每行是一个家庭的姓氏和该家庭的收入)。我希望这能详细说明我的初始问题。