2

我正在做家庭作业,程序的关键循环给我带来了麻烦。我的老师告诉我,如果我对计数器控制变量使用 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:感谢大家帮助我消除误解。继续方法文档!

4

4 回答 4

12
for ( int check = 0; check == value; check++ )

这只会在check == value. 修改为:

for ( int check = 0; check < value; check++ )
于 2013-03-27T20:07:04.070 回答
3

尝试for ( int check = 0; check <= value; check++ )代替for ( int check = 0; check == value; check++ )

于 2013-03-27T20:06:31.783 回答
1

来自Oracle 网站(我的重点):

for 语句提供了一种迭代一系列值的紧凑方法。程序员经常将其称为“for 循环”,因为它反复循环直到满足特定条件。for 语句的一般形式可以表示为:

for (initialization; termination; increment) {
statement(s) 
} 

使用此版本的 for 语句时,请记住:

初始化表达式初始化循环;它在循环开始时执行一次。

当终止表达式的计算结果为 false 时,循环终止。

每次循环迭代后都会调用增量表达式;这个表达式增加或减少一个值是完全可以接受的。

于 2013-03-27T20:13:23.140 回答
0

要获得与以下相同的效果:

int check = 0;
while (check < value) {
  // something
}

for应该是这样的:

for (int check = 0; check < value; check++) {
  // something
}
于 2013-03-27T20:10:49.983 回答