Java 我如何将一个由12人组成的数组排序为一个由4个家庭组成的较小数组?
我如何将一个包含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
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(每行是一个家庭的姓氏和该家庭的收入)。我希望这能详细说明我的初始问题。