Java 给较矮的人分类
所以我有一个Person类,它包含一个人的名字(字符串)和一行中前一个人的名字。我们已经知道“彼得”是排在第一位的,他没有前辈。我想给他们一个显示订单的数字Java 给较矮的人分类,java,algorithm,sorting,Java,Algorithm,Sorting,所以我有一个Person类,它包含一个人的名字(字符串)和一行中前一个人的名字。我们已经知道“彼得”是排在第一位的,他没有前辈。我想给他们一个显示订单的数字 class Person{ private String name; private int number; private String previousName; //getters and setters... } 结果应该是: Peter - 1 Joseph - 2 Dave - 3 Ste
class Person{
private String name;
private int number;
private String previousName;
//getters and setters...
}
结果应该是:
Peter - 1
Joseph - 2
Dave - 3
Steve - 4
Samuel - 5
我的结果是:
Peter 1
Dave 3
Samuel 2
Joseph 2
Steve 1
我还没有测试过,但应该可以。基本思想是在列表中找到第一个人。然后在列表上迭代,找到下一个以上一个名字作为当前名字的人。当然不是一个非常优化的解决方案,但可以改进
//Find the first person in list, assuming first person has no previous name
int currentPerson = 0;
for (int i=0; i<persons.length; i++){
if (persons[i].getPreviousName().equals("")){
currentPerson = i;
break;
}
}
persons[currentPerson].setNumber(1);
int count = 1;
//loop until you number every person
while (count < persons.length){
//find the next person after current person
for (int i=0; i<persons.length; i++){
if (persons[i].getPreviousName().equals(persons[currentPerson].getName())){
persons[currentPerson].setNumber(count++);
currentPerson = i;
break;
}
}
}
//在列表中查找第一个人,假设第一个人以前没有名字
int currentPerson=0;
对于(int i=0;i您在标题中提到了“身高”,但代码中没有提到身高。您能否澄清此人的身高与您的问题之间的关系?您将如何手动对这些人进行编号?如果我给您的姓名与您在程序中键入的姓名相同,您将如何对其进行编号?该行基于“身高”,人的实际身高并不重要,只是行中的位置。因此,当您输入Dave;Joseph时,这意味着Joseph更短(更高)而不是Dave?作为一名程序员,你需要培养的一项技能是确定解决问题时哪些细节重要,哪些细节不重要。在这种情况下,身高的概念只是给出你试图解决的问题的故事中的一个背景细节。它实际上与你如何编写代码无关。这里的重要部分是你有一个输入,告诉你哪个人跟在另一个人后面。回到我前面的问题:如果输入中有“before;after”的列表,你会如何手工对名字进行排序?通过示例,然后尝试。。。
Peter 1
Dave 3
Samuel 2
Joseph 2
Steve 1
//Find the first person in list, assuming first person has no previous name
int currentPerson = 0;
for (int i=0; i<persons.length; i++){
if (persons[i].getPreviousName().equals("")){
currentPerson = i;
break;
}
}
persons[currentPerson].setNumber(1);
int count = 1;
//loop until you number every person
while (count < persons.length){
//find the next person after current person
for (int i=0; i<persons.length; i++){
if (persons[i].getPreviousName().equals(persons[currentPerson].getName())){
persons[currentPerson].setNumber(count++);
currentPerson = i;
break;
}
}
}