A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© leo_yang 中级黑马   /  2016-4-27 17:26  /  3562 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币


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

最佳答案

查看完整内容

你的第二个if语句是应该嵌套在第一个if语句里面的. public class Demo { public static void main(String[] args) { int temp = 0; for (int i = 1; i

7 个回复

倒序浏览
你的第二个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 + "个");
        }
}
回复 使用道具 举报
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 + "个" );
        }
}



这个是程序
回复 使用道具 举报
软件自动内置格式化,就是自动给你加空格的。这个加空格没什么关系的,美观性而已
回复 使用道具 举报
不错,计数器思想来解决素数个数
回复 使用道具 举报
本帖最后由 nannanziyu 于 2016-4-28 02:59 编辑

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

回复 使用道具 举报
if (temp % 5 == 0){
                                System.out.println();
                        }                        

这个语句不应放在第二个for语句中.
因为当sum<3,temp%5 == 0时,该语句会循环3次,  故循环出3个空横行
应将该if语句 放在第一个for语句中.
回复 使用道具 举报
领教了{:3_46:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马