我正在做家庭作业,而且该计划的关键循环给我带来了麻烦。我的老师告诉我,如果我使用while循环获取一个反控制变量,她会取下积分,所以我很想做到这一点。
这就是我想要工作的东西,以及我内心的感受:
for ( int check = 0; check == value; check++ ) {
int octal = getOctal();
int decimal = convertOctal( octal );
System.out.printf( "%d:%d", octal, decimal );
}
但是,此循环不会运行。我尝试使用while循环,它完美地工作了!
int check = 0;
while ( check < value )
{
int octal = getOctal();
int decimal = convertOctal( octal );
System.out.printf( "%d:%d", octal, decimal );
check++;
}
以下是主要方法的其余部分:
public static void main ( String args[] )
{
int value = getCount();
while ( value < 0 )
{
System.out.print( "\nYou must enter a positive number" );
value = getCount();
}
if ( value == 0 )
{
System.out.print( "\n\nNo numbers to convert.\n\n" );
}
else
{
int check = 0;
while ( check < value )
{
int octal = getOctal();
int decimal = convertOctal( octal );
System.out.printf( "%d:%d", octal, decimal );
check++;
}
}
}
是的,这是一个八进制到十进制的转换器。我自己从头开始编写转换器方法,并为此感到非常自豪。
编辑:我的问题是,这里有什么问题? EDIT part deux:感谢大家帮忙解决我的误解。继续方法文档!
答案 0 :(得分:12)
for ( int check = 0; check == value; check++ )
仅在check == value
时才会运行。修改为:
for ( int check = 0; check < value; check++ )
答案 1 :(得分:3)
尝试for ( int check = 0; check <= value; check++ )
而不是for ( int check = 0; check == value; check++ )
答案 2 :(得分:1)
来自the Oracle website(我的重点):
for语句提供了一种迭代方式来迭代一系列的 值。程序员经常将它称为“for循环”,因为 它反复循环直到特定条件的方式 满意。 for语句的一般形式可以表示为 如下:
for (initialization; termination; increment) {
statement(s)
}
使用此版本的for语句时,请记住:
初始化表达式初始化循环;它被执行了 一旦,循环开始。
终止表达式的计算结果为 假,循环终止。
之后调用增量表达式 每次迭代循环;这是完全可以接受的 表达式增加或减少值。
答案 3 :(得分:0)
获得与以下相同的效果:
int check = 0;
while (check < value) {
// something
}
您的for
应如下所示:
for (int check = 0; check < value; check++) {
// something
}