Java 不在for循环中使用局部变量i可以吗?
代码执行得很好,但警告仍然困扰着我。我使用了变量Java 不在for循环中使用局部变量i可以吗?,java,for-loop,Java,For Loop,代码执行得很好,但警告仍然困扰着我。我使用了变量decNumber,我们被指示只用于循环 public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int decNumber,rem=0; System.out.print("Enter a decimal number: "); de
decNumber
,我们被指示只用于循环
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int decNumber,rem=0;
System.out.print("Enter a decimal number: ");
decNumber = in.nextInt();
for(int i=0;decNumber>0;i++) {
rem = (decNumber%2);
decNumber = (decNumber/2);
System.out.println(rem);
}
这会更符合犹太教:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a decimal number: ");
int decNumber = in.nextInt();
for (int i = decNumber; i > 0; i = i / 2) {
int rem = (i % 2);
System.out.println(rem);
}
in.close();
}
}
这里的优势是
decNumber
变量,因此以后仍可以使用它for
循环防止内部行为(即rem
)流出for
循环实际上像for一样使用,而不是while
这会更符合犹太教:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a decimal number: ");
int decNumber = in.nextInt();
for (int i = decNumber; i > 0; i = i / 2) {
int rem = (i % 2);
System.out.println(rem);
}
in.close();
}
}
这里的优势是
decNumber
变量,因此以后仍可以使用它for
循环防止内部行为(即rem
)流出for
循环实际上像for一样使用,而不是while
你们并没有添加警告,但考虑到你们问题的背景,我相信这并不重要 您必须知道
for
和while
循环之间的区别。可以找到一个很好的解释
在代码中,您没有使用局部变量
i
来控制循环。您的循环由decNumber>0
控制,因此for
在这里完全没有必要
更好的方法是使用while
while ( decNumber > 0 ) {
rem = (decNumber%2);
decNumber = (decNumber/2);
System.out.println(rem);
}
你们并没有添加警告,但考虑到你们问题的背景,我相信这并不重要 您必须知道
for
和while
循环之间的区别。可以找到一个很好的解释
在代码中,您没有使用局部变量
i
来控制循环。您的循环由decNumber>0
控制,因此for
在这里完全没有必要
更好的方法是使用while
while ( decNumber > 0 ) {
rem = (decNumber%2);
decNumber = (decNumber/2);
System.out.println(rem);
}
在代码中,您根本没有使用
i
。实际上,decNumber
用作迭代索引,因为它是从循环的一次迭代到下一次迭代的变化。代码中有行执行for
循环的所有三个部分的功能-
- 初始化:
int decNumber=in.nextInt()代码>
- 继续条件:
decNumber>0
- 增量:
,也可以编写为decNumber=decNumber/2
decNumber/=2
rem
,因此最好在循环内声明它,而不是在一开始就声明它
将所有这些放在一起,您可以按照如下方式重写代码,从而保持for
循环的精神
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a decimal number: ");
for( int decNumber = in.nextInt(); decNumber > 0; decNumber /= 2 ) {
int rem = decNumber % 2;
System.out.println(rem);
}
}
这清楚地说明了循环是如何初始化的,使其继续的条件是什么,以及从一个迭代到下一个迭代有什么变化;因此,与使用冗余索引变量相比,它的可读性更好。在代码中,您根本没有使用
i
。实际上,decNumber
用作迭代索引,因为它是从循环的一次迭代到下一次迭代的变化。代码中有行执行for
循环的所有三个部分的功能-
- 初始化:
int decNumber=in.nextInt()代码>
- 继续条件:
decNumber>0
- 增量:
,也可以编写为decNumber=decNumber/2
decNumber/=2
rem
,因此最好在循环内声明它,而不是在一开始就声明它
将所有这些放在一起,您可以按照如下方式重写代码,从而保持for
循环的精神
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a decimal number: ");
for( int decNumber = in.nextInt(); decNumber > 0; decNumber /= 2 ) {
int rem = decNumber % 2;
System.out.println(rem);
}
}
这清楚地说明了循环是如何初始化的,使其继续的条件是什么,以及从一个迭代到下一个迭代有什么变化;因此,与使用冗余索引变量相比,它的可读性更好。您是否假设我们都可以看到您的屏幕?什么警告?当然,但是
while循环
或while循环不更好吗?对不起。我是新来的。忘了提到警告的地方了。它可以在for循环的条件表达式中找到。它说“没有使用局部变量i的值。我只是想知道是否可以忽略它。警告说明了一个很好的观点。定义i
有什么意义?如果你认为必须有i
才能有一个循环,那么(1)您可以使用带有空部分的for
循环,因此您可以删除int i=0
和i++
(但不需要分号),以及(2)如果您不需要像i
这样的变量,那么您的循环本质上是while
循环(但我知道您不应该使用一个)。您是否假设我们都可以看到您的屏幕?什么警告?当然,但是while循环
或while循环不更好吗?抱歉。我是新来的。忘了提到警告的位置。它位于for循环的条件表达式中。它表示“未使用局部变量i的值”。我只是想知道是否可以忽略它。这个警告很有道理。定义i
有什么意义?如果你认为你必须有一个i
才能有一个循环,那么(1)你可以有一个for
循环和空部分,所以你可以删除int i=0
和i++
(但不是分号),并且(2)如果你不需要像i
这样的变量,那么你的循环本质上就是一个而循环(但我知道你不应该使用一个)。是的,我也是这么想的,但既然我的导师希望我们使用for loop,也许我会为我找到另一种方法。谢谢!是的,我也是这么想的,但既然我的导师希望我们使用for loop,也许我会为我找到另一种方法。谢谢!