菜鸟的我求帮助!

sky_shuai 2016-07-18 06:59:37
package sushu;

public class suhsu {

/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
int i,a;
int num=0;
for(i=101;i<201;i++){
int s=0;
for(a=2;a<i;a++){
if(i%a==0){
break;
}
if(a>=i){
s=1;
}
}
if(s==1){
num++;
System.out.println(i);

}
}

System.out.println(num);
}
}
为什么一直是0?求大神告诉我玩这个菜鸟,,,
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_shuai 2016-07-21
  • 打赏
  • 举报
回复
引用 2 楼 ji3009 的回复:
package sushu;

public class suhsu
 {
public static void main(String[] args) 
{
int i,a;
int num=0;
for(i=101;i<201;i++)
{
	int s=0;
	for(a=2;a<i;a++)
	{
		if(i%a==0)
		{
			break;	
		}
		if(a>=i)
		{
                	s=1;
                }
         }
         if(s==1)
		{
            		num++;
            		System.out.println(i);
            	  
            	}
}

 System.out.println(num);
}
}
楼主别误会,我这发的还是你的代码,忍不住吐槽一下,注意一下你的代码的结构好不好,这括号看的我很头疼,所以不得不给你整了整这括号的结构。这一个程序员的代码就相当于一个人的脸面,所以要让人看着舒服,符合规范。 错误是逻辑性的,你可以分别带入a=101和102就可以发现,当a=101,i%a==0不成立,a>=i也不成立,所以s还是等于0,最后一个if语句不会执行,最后num++中的内容还是没有执行,num=0;当a=102,i%2=0成立,所以break退出for循环,最后num++中的内容还是没有执行,num=0. 楼主加油
我会尽力改正的!
sky_shuai 2016-07-21
  • 打赏
  • 举报
回复
引用 4 楼 sky_shuai 的回复:
[quote=引用 1 楼 qnmdcsdn 的回复:]

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i, a;
		int num = 0;
		for (i = 101; i < 201; i++) {
			int s = 0;
			for (a = 2; a < i; a++) {
				if (i % a == 0) {
					break;
				}
				if (a >= i) {
					s = 1;
				}
			}
			if (s == 1) {
				num++;
				System.out.println(i);

			}
		}

		System.out.println(num);
	}
没看明白这是要算啥,a一直小于i,s不会等于1,num不会加,所以等于0
貌似求101到201 的素数[/quote]当时没明白现在明白了,还是谢谢你!
sky_shuai 2016-07-21
  • 打赏
  • 举报
回复
引用 1 楼 qnmdcsdn 的回复:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i, a;
		int num = 0;
		for (i = 101; i < 201; i++) {
			int s = 0;
			for (a = 2; a < i; a++) {
				if (i % a == 0) {
					break;
				}
				if (a >= i) {
					s = 1;
				}
			}
			if (s == 1) {
				num++;
				System.out.println(i);

			}
		}

		System.out.println(num);
	}
没看明白这是要算啥,a一直小于i,s不会等于1,num不会加,所以等于0
貌似求101到201 的素数
qq_35651811 2016-07-19
  • 打赏
  • 举报
回复
你的for循环还没有理解
你for循环条件判断a<i 当a>=i时 不会跳入循环 所以你的s一直为0 num一直为0

同为初学者 希望可以帮到你
脏不张 2016-07-19
  • 打赏
  • 举报
回复
package sushu;

public class suhsu
 {
public static void main(String[] args) 
{
int i,a;
int num=0;
for(i=101;i<201;i++)
{
	int s=0;
	for(a=2;a<i;a++)
	{
		if(i%a==0)
		{
			break;	
		}
		if(a>=i)
		{
                	s=1;
                }
         }
         if(s==1)
		{
            		num++;
            		System.out.println(i);
            	  
            	}
}

 System.out.println(num);
}
}
楼主别误会,我这发的还是你的代码,忍不住吐槽一下,注意一下你的代码的结构好不好,这括号看的我很头疼,所以不得不给你整了整这括号的结构。这一个程序员的代码就相当于一个人的脸面,所以要让人看着舒服,符合规范。 错误是逻辑性的,你可以分别带入a=101和102就可以发现,当a=101,i%a==0不成立,a>=i也不成立,所以s还是等于0,最后一个if语句不会执行,最后num++中的内容还是没有执行,num=0;当a=102,i%2=0成立,所以break退出for循环,最后num++中的内容还是没有执行,num=0. 楼主加油
  • 打赏
  • 举报
回复

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i, a;
		int num = 0;
		for (i = 101; i < 201; i++) {
			int s = 0;
			for (a = 2; a < i; a++) {
				if (i % a == 0) {
					break;
				}
				if (a >= i) {
					s = 1;
				}
			}
			if (s == 1) {
				num++;
				System.out.println(i);

			}
		}

		System.out.println(num);
	}
没看明白这是要算啥,a一直小于i,s不会等于1,num不会加,所以等于0

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧