简单Java问题:花括号引起的一个错误。

importjava.util.Scanner;publicclassTest40023{publicstaticvoidmain(Stringargs[]){intri... import java.util.Scanner;
public class Test40023{
public static void main(String args[]){
int ri, repeat;
int count, i, j, k, m, n, sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
m=in.nextInt();
n=in.nextInt();
sum=count=0;
for(i=m;i<=n;i++){
for(j=2;j<=i-1;j++)
{
if(i%j==0)
break;
if(j==i)
{count=count+1;sum=sum+i;}
}

}
/*---------------------*/
System.out.println("count="+count+", sum="+sum);
}
}
}

不好意思有点长。那个,这个程序是为了计算m,n之间素数的个数及和。如果按上述操作,sum,count都等于0,然而如果去掉第三个for之后的花括号,却能正常运行。不明白,请问哪里有问题?如果加了括号的话和不加有什么不一样吗??谢谢回答!!
展开
 我来答
100251733802
2014-04-10 · TA获得超过252个赞
知道小有建树答主
回答量:438
采纳率:33%
帮助的人:118万
展开全部
package flex.claim.survey.service.spring;

import java.util.Scanner;

public class Test40023 {
public static void main(String args[]) {
int ri, repeat;
int count, i, j, k, m, n, sum;
Scanner in = new Scanner(System.in);
repeat = in.nextInt();
for (ri = 1; ri <= repeat; ri++) {
m = in.nextInt();
n = in.nextInt();
sum = count = 0;
for (i = m; i <= n; i++) {
for (j = 2; j <= i - 1; j++) {
if (i % j == 0)
break;
if (j == i) {
count = count + 1;
sum = sum + i;
}
}

}
/*---------------------*/
System.out.println("count=" + count + ", sum=" + sum);
}
}
}

我帮你格式化了, 说第几行的花括号有问题。

追问
你好,本人愚钝,不明白为什么for后面加上花括号结果就错了,这样做为什么是错的呢?读起来是对的。和不加有什么区别么?感谢回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晋红豆33
2014-04-10 · TA获得超过124个赞
知道小有建树答主
回答量:331
采纳率:0%
帮助的人:81万
展开全部

去掉第三个for之后的花括号后程序if(j==i)  {count=count+1;sum=sum+i;}相当于在第二个for循环里


代码相当于这样

for(i=m;i<=n;i++){
        for(j=2;j<=i-1;j++)
        {
            if(i%j==0)
            break;
         }
            if(j==i){count=count+1;sum=sum+i;}
            
        }
追问
那可以告诉我我加上花括号为什么不对吗?我知道那就是在第二个for循环里,可是感觉还是没有说到点呢。。。不好意思我愚钝了
追答
因为加了后 程序满足 i%j==0的时候就直接跳出了 不执行if(j==i){count=count+1;sum=sum+i;}这一句
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wudawei121
2014-04-10 · TA获得超过272个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:65.3万
展开全部
for(j=2;j<=i-1;j++)
if(i%j==0)
break;
if(j==i){
count=count+1;
sum=sum+i;
}
缩进写明白一点不就清楚了么
追问
我并不是看不懂格式,我就是想知道为什么for加上花括号答案就是错的,和不加有什么区别
追答
if语句只有i为素数的时候,也就是没有小于i的数可以整除i才会使得j循环到i-1,此时在for循环外面j==i。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NoGrief
2014-04-10 · TA获得超过253个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:220万
展开全部
for下面已经有括号了。。再加就错了。。
更多追问追答
追问
什么呀。。。为什么就错呀
追答

一个for循环,对应一对花括号

for(;;)
{
}

你小括号后面在加一个

for(;;){
{
}

这样能不错么??

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式