Java j在循环中取的值是什么
类Java j在循环中取的值是什么,java,arrays,list,arraylist,Java,Arrays,List,Arraylist,类Sort中下列行的行为是什么 for (int j = i+1; j > ListPerson.size(); j++) { 我添加了System.out.println(j)查看j获取的值,但执行时,不显示任何值! 为什么Eclipse不考虑 ListNo.GET(j)< /C>作为一个错误,知道 j> ListPrimes?siz()?!! package Tests; public class Person { String nom; int age;
Sort
中下列行的行为是什么
for (int j = i+1; j > ListPerson.size(); j++) {
我添加了System.out.println(j)
查看j
获取的值,但执行时,不显示任何值!
为什么Eclipse不考虑<代码> ListNo.GET(j)< /C>作为一个错误,知道<代码> j> ListPrimes?siz()<代码>?!!
package Tests;
public class Person {
String nom;
int age;
public Person(String nom, int age) {
this.nom = nom;
this.age = age;
}
}
包测试;
导入java.util.ArrayList;
导入java.util.List;
导入CompUnivSol2.Etudiant;
公共类排序{
公共静态void main(字符串[]args){
List ListPerson=new ArrayList();
添加(新的人(“保罗”,20));
添加(新的人(“Coco”,18));
添加(新的人(“Eric”,4));
字符串temp1;
int temp2;
对于(inti=0;iListPerson.size();j++){
if(ListPerson.get(i).age>ListPerson.get(j).age){
temp1=ListPerson.get(j).nom;
ListPerson.get(j).nom=ListPerson.get(i).nom;
get(i).nom=temp1;
temp2=ListPerson.get(j).age;
get(j).age=ListPerson.get(i).age;
ListPerson.get(i).age=temp2;
}
}
}
对于(int i=0;i
类排序中的最后一个循环显示以下内容:
编号1:Paul:20
编号2:Coco:18
编号3:Eric:4
因为j>ListPerson.size()
在下一行
for (int j = i + 1; j > ListPerson.size(); j++)
这个循环根本没有被执行
当i=0
-->
j=1-->时,条件的计算结果为1>3
(即j>ListPerson.size()
)
正如您所理解的,1>3
是false
,因此循环不会执行
你需要把它改成
for (int j = i + 1; j < ListPerson.size(); j++)
for(int j=i+1;j
除此之外,您的排序逻辑也不正确。你只是在交换他们的名字,而不是交换他们。要解决此问题,请更换
String temp1;
int temp2;
for (int i = 0; i < ListPerson.size(); i++) {
for (int j = i + 1; j > ListPerson.size(); j++) {
if (ListPerson.get(i).age > ListPerson.get(j).age) {
temp1 = ListPerson.get(j).nom;
ListPerson.get(j).nom = ListPerson.get(i).nom;
ListPerson.get(i).nom = temp1;
temp2 = ListPerson.get(j).age;
ListPerson.get(j).age = ListPerson.get(i).age;
ListPerson.get(i).age = temp2;
}
}
}
String temp1;
int temp2;
对于(inti=0;iListPerson.size();j++){
if(ListPerson.get(i).age>ListPerson.get(j).age){
temp1=ListPerson.get(j).nom;
ListPerson.get(j).nom=ListPerson.get(i).nom;
get(i).nom=temp1;
temp2=ListPerson.get(j).age;
get(j).age=ListPerson.get(i).age;
ListPerson.get(i).age=temp2;
}
}
}
与
Person-temp=null;
对于(inti=0;iListPerson.get(j).age){
temp=ListPerson.get(i);
set(i,ListPerson.get(j));
ListPerson.set(j,temp);
}
}
}
然而,一种优雅的方法是使用集合。排序而不是这样排序
如果有任何疑问/问题,请随时发表评论。Eclipse无法猜测j>ListPerson.size(),即使这是您的循环条件。但是由于这种情况,程序永远不会进入循环;查看j所取的值,但执行时,不显示任何值!j> ListPerson.size()不是问题!这就是我不明白的!我修改了类排序:我添加了显示按年龄排序的人员的最后一个循环。在有问题的行中,您有j>
而不是j程序工作的问题,即使'j>ListPerson.size()'。当我把它改为'j<'时,我得到一个例外!
String temp1;
int temp2;
for (int i = 0; i < ListPerson.size(); i++) {
for (int j = i + 1; j > ListPerson.size(); j++) {
if (ListPerson.get(i).age > ListPerson.get(j).age) {
temp1 = ListPerson.get(j).nom;
ListPerson.get(j).nom = ListPerson.get(i).nom;
ListPerson.get(i).nom = temp1;
temp2 = ListPerson.get(j).age;
ListPerson.get(j).age = ListPerson.get(i).age;
ListPerson.get(i).age = temp2;
}
}
}
Person temp = null;
for (int i = 0; i < ListPerson.size(); i++) {
for (int j = i + 1; j < ListPerson.size(); j++) {
if (ListPerson.get(i).age > ListPerson.get(j).age) {
temp = ListPerson.get(i);
ListPerson.set(i, ListPerson.get(j));
ListPerson.set(j, temp);
}
}
}