Java for循环不会运行......?

时间:2013-03-27 20:05:36

标签: java

我正在做家庭作业,而且该计划的关键循环给我带来了麻烦。我的老师告诉我,如果我使用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 个答案:

答案 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
}