简单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之后的花括号,却能正常运行。不明白,请问哪里有问题?如果加了括号的话和不加有什么不一样吗??谢谢回答!! 展开
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之后的花括号,却能正常运行。不明白,请问哪里有问题?如果加了括号的话和不加有什么不一样吗??谢谢回答!! 展开
展开全部
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后面加上花括号结果就错了,这样做为什么是错的呢?读起来是对的。和不加有什么区别么?感谢回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉第三个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;}这一句
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(j=2;j<=i-1;j++)
if(i%j==0)
break;
if(j==i){
count=count+1;
sum=sum+i;
}
缩进写明白一点不就清楚了么
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。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for下面已经有括号了。。再加就错了。。
更多追问追答
追问
什么呀。。。为什么就错呀
追答
一个for循环,对应一对花括号
for(;;)
{
}
你小括号后面在加一个
for(;;){
{
}
这样能不错么??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询