日期:2014-05-20  浏览次数:20821 次

关于控制每行输出个数的问题
哪位大侠帮忙看看,这是怎么回事,我要控制一行输出两个数,但是用while语句会出错,程序会变成永真循环,停不了。

public static void PrintPrimeNumber(int n)//输出n个质数
  {
  int count=0;
  int number=2;
  final int NUMBER_OF_PER_LINE = 10;
  int i=1;  
  while(count < n)
  {
  if (isPrime(number))//isPrime() 是本类的另一个方法,如果一个数是质数,那么返回真,否则返回假
  {
  count++;
  System.out.printf("%-5s", number);
  while(i%2==0) //这里我用if就可以控制每行输出的个数,当我换成while就出错了
  System.out.print("\njj");//我在换行符后面加两个字符,可以看得更清楚
  i++;
  }
  number++;
  }

------解决方案--------------------
while(i%2==0) //这里我用if就可以控制每行输出的个数,当我换成while就出错了
System.out.print("\njj");
当i=2;时无限循环吧?退不出来啊
------解决方案--------------------
Java code
 while(i%2==0) //这里我用if就可以控制每行输出的个数,当我换成while就出错了
  System.out.print("\njj");//我在换行符后面加两个字符,可以看得更清楚
  i++;

------解决方案--------------------
Java code
while(i%2==0) {//这里我用if就可以控制每行输出的个数,当我换成while就出错了
  System.out.print("\njj");//我在换行符后面加两个字符,可以看得更清楚
}

------解决方案--------------------
Java code


while(i%2==0){ //这里我用if就可以控制每行输出的个数,当我换成while就出错了
  System.out.print("\njj");//我在换行符后面加两个字符,可以看得更清楚
  i++;
}

------解决方案--------------------
while(i%2==0) //这里我用if就可以控制每行输出的个数,当我换成while就出错了
System.out.print("\njj");//我在换行符后面加两个字符,可以看得更清楚
i++;

等价于

while(i%2==0) {
System.out.print("\njj");
}
i++;
------解决方案--------------------
while 不是拿来给你判断的,是拿来给你循环的,把++ 放里面也没用,改成
while(i%2==0){ 
System.out.print("\njj");
break;

};
i++;
但这样做不太好,和if没什么区别,但你想了解一下循环也没事,以后渐渐懂的,加油!
------解决方案--------------------
探讨

把i++放在{}的方法我试过了,结果是死循环的问题解决了但不能控制其每行输出两个。谁能解释一下这是为什么吗?