Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java j在循环中取的值是什么_Java_Arrays_List_Arraylist - Fatal编程技术网

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);
        }
    }
}