黑马程序员技术交流社区

标题: 新手求大神解答 [打印本页]

作者: leo_yang    时间: 2016-4-27 17:26
标题: 新手求大神解答


一直不明白为什么程序运行后,中间会有那么多空行,而且发给同学的电脑上运行也是这样子,我的电脑运行其他程序都很顺利,没有这个问题,就这个会这样,求大神指教!!!!

作者: 何海    时间: 2016-4-27 17:26
你的第二个if语句是应该嵌套在第一个if语句里面的.
public class Demo {

        public static void main(String[] args) {
                int temp = 0;
                for (int i = 1; i <= 100; i++) {
                        int sum = 0;
                        for (int j = 1; j <= i; j++) {
                                if (i % j == 0) {
                                        sum++;
                                }
                        }
                        if (sum < 3) {
                                temp++;
                                System.out.print(i + " ");
                                if (temp % 5 == 0) {
                                        System.out.println();
                                }
                        }

                }
                System.out.println("素数有" + temp + "个");
        }
}
作者: leo_yang    时间: 2016-4-27 17:28
class Test4 {
        public static void main(String[] args) {
                int temp = 0;
                for (int i=1;i<=100;i++){
                        int sum = 0;
                        for (int j=1;j<=i;j++){
                                if (i%j ==0){
                                sum ++;
                                }                       
                        }
                        if (sum < 3){
                                    temp ++;
                                        System.out.print(i+" ");
                                }
                        if (temp % 5 == 0){
                                System.out.println();
                        }                       
                }
                System.out.println("素数有"+ temp + "个" );
        }
}



这个是程序
作者: xiaoxiqq    时间: 2016-4-27 17:52
软件自动内置格式化,就是自动给你加空格的。这个加空格没什么关系的,美观性而已
作者: sfz6012    时间: 2016-4-27 23:38
不错,计数器思想来解决素数个数
作者: nannanziyu    时间: 2016-4-28 02:06
本帖最后由 nannanziyu 于 2016-4-28 02:59 编辑

原因很简单,就是你的temp%5==0;和第二个for循环在同一个层次,你的temp就算%5==0,在下一个素数前会一直是这个状态,而第一个for还要循环很多次才能碰到下一个素数中间改成这样就对了
if (sum < 3){
                                    temp ++;
                                        System.out.print(i+" ");
                                }else{
                                                                continue;
                                                                }


作者: 向前_KCmhn    时间: 2016-4-28 22:55
if (temp % 5 == 0){
                                System.out.println();
                        }                        

这个语句不应放在第二个for语句中.
因为当sum<3,temp%5 == 0时,该语句会循环3次,  故循环出3个空横行
应将该if语句 放在第一个for语句中.
作者: 我说三年    时间: 2016-4-30 19:39
领教了{:3_46:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2