Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 如何仅显示数组中的可用元素? 我可以放置和“删除”数组中的元素,并打印它们,如果我不删除数组中间的一个元素,因为我的代码只让它显示直到0出现,如果0是数组中的元素,则打印停止。 我试过这样做: publicstaticvoidshowusers(){ 对于(int i=0;i_Java_Arrays_Filtering - Fatal编程技术网

Java 如何仅显示数组中的可用元素? 我可以放置和“删除”数组中的元素,并打印它们,如果我不删除数组中间的一个元素,因为我的代码只让它显示直到0出现,如果0是数组中的元素,则打印停止。 我试过这样做: publicstaticvoidshowusers(){ 对于(int i=0;i

Java 如何仅显示数组中的可用元素? 我可以放置和“删除”数组中的元素,并打印它们,如果我不删除数组中间的一个元素,因为我的代码只让它显示直到0出现,如果0是数组中的元素,则打印停止。 我试过这样做: publicstaticvoidshowusers(){ 对于(int i=0;i,java,arrays,filtering,Java,Arrays,Filtering,首先,为什么代码的行为如此?循环中的代码在循环的每次迭代中都会运行。因此,如果在其中有一个if语句,并且if语句的主体包含一个返回,那么在任何给定迭代中if语句为true时,该方法就会立即返回 现在,修复您的代码。若要跳过给定的迭代,请使用continue语句。这会使for循环继续到下一个迭代,但不会从方法返回。对于“没有用户”选中,您可以使用布尔变量。您将其初始化为true,并且无论何时打印出用户,都将其设置为false。这样,在for循环之后,如果该变量仍然为true,您就知道您没有用户。以

首先,为什么代码的行为如此?循环中的代码在循环的每次迭代中都会运行。因此,如果在其中有一个if语句,并且if语句的主体包含一个返回,那么在任何给定迭代中if语句为true时,该方法就会立即返回

现在,修复您的代码。若要跳过给定的迭代,请使用
continue
语句。这会使for循环继续到下一个迭代,但不会从方法返回。对于“没有用户”选中,您可以使用布尔变量。您将其初始化为true,并且无论何时打印出用户,都将其设置为false。这样,在for循环之后,如果该变量仍然为true,您就知道您没有用户。以下是我对代码的两个修订:

publicstaticvoidshowusers(){
//声明布尔变量:
布尔零=真;
System.out.println(“用户列表:”);
//对于数组中所有值的循环,不是100次
for(int i=0;i
我们在这里可以做的一个改进是使用增强的for循环。这允许您去掉局部变量
i
(它仍然在内部使用,但我们不担心性能),只处理数组元素。这是我的更新版本:

publicstaticvoidshowusers(){
布尔零=真;
System.out.println(“用户列表:”);
//增强for循环更简洁,它覆盖了i变量:
for(int用户:用户){
如果(用户==0){
继续;
}
努斯=假;
System.out.println(用户);
}
如果(零){
System.out.println(“没有用户”);
}
}
另一个改进是如果您想要“用户列表”:标题仅在有用户时显示。查看您的代码,这似乎是您想要的。要实现这一点,您只需缓冲输出并稍后打印,而不是立即打印。如果使用StringBuilder缓冲输出,则可以在for循环后检查StringBuilder是否为空,从而消除需要对于布尔变量。下面是我将如何实现这一点:

publicstaticvoidshowusers(){
//StringBuilder允许您在不打印的情况下构建字符串
//它基本上与字符串相同,但仅在
//你告诉它
StringBuilder输出=新的StringBuilder();
for(int用户:用户){
如果(用户==0){
继续;
}
//将用户添加到StringBuilder,而不是将其打印出来:
output.append(user.append(System.lineSeparator());
}
if(output.length()==0){
//如果没有用户,则不会打印标题
System.out.println(“没有用户”);
}否则{
System.out.println(“用户列表:”);
//这会导致对StringBuilder的toString()方法的隐式调用,
//它执行连接并提供一个可以打印出来的字符串
系统输出打印项次(输出);
}
}

首先,为什么代码的行为如此?循环中的代码在循环的每次迭代中都会运行。因此,如果在循环中有if语句,并且if语句的主体包含一个返回,那么在任何给定的迭代中,只要if语句为真,该方法就会返回

现在,修复您的代码。若要跳过给定的迭代,请使用
continue
语句。这会使for循环继续到下一个迭代,但不会从方法返回。对于“没有用户”选中,您可以使用布尔变量。您将其初始化为true,并且无论何时打印出用户,都将其设置为false。这样,在for循环之后,如果该变量仍然为true,您就知道您没有用户。以下是我对代码的两个修订:

publicstaticvoidshowusers(){
//声明布尔变量:
布尔零=真;
System.out.println(“用户列表:”);
//对于数组中所有值的循环,不是100次
for(int i=0;i
我们在这里可以做的一个改进是使用增强的for循环。这允许您去掉局部变量
i
(它仍然在内部使用,但我们不担心性能),只处理数组元素。这是我的更新版本:

publicstaticvoidshowusers(){
布尔零=真;
System.out.println(“用户列表:”);
//增强for循环更简洁,它覆盖了i变量:
for(int用户:用户){
如果(用户==0){
继续;
}
努斯=假;
System.out.println(用户);
}
如果(零){
System.out.printl
1, 2, 3,