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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马上都有 中级黑马   /  2014-4-15 18:52  /  938 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求是获取1到100中7的倍数的个数?
正确代码是这样的
class For
{
public static void main(String[]    args)   
{
int count = 0;
for (int x = 1; x<=100&x%7==0; x++)
{
count++;
}
System.out.println("count="+count);
}
}
我想用三元运算符进行进一步简化就改了改代码,如下:
class For
{
public static void main(String[]    args)   
{
int count = 0;
for (int x = 1; x<=100; x++)
{
(x%7==0)?count++:count+=0;
}
}
}
但是编译的时候报错了,实在想不通…
我也分析了下运行的流程,没发现错误呀…前辈们帮我检查下,谢谢啦!

7 个回复

倒序浏览
亲,你的输出语句在哪里?你没有写出来啊
回复 使用道具 举报
在初级阶段,尽量不要用复杂的方法解决问题,要一步一步来,由浅入深,到最后会水到渠成。加油
回复 使用道具 举报
本帖最后由 kuroro自走核炮 于 2014-4-15 19:21 编辑

class For
{
    public static void main(String[]    args)   
    {
        int count = 0;
        for (int x = 1; x<=100; x++)
         {
             (x%7==0)?count++:count+=0;
         }
    }
}
刚才眼瘸看错了……
唔,我自己写了一下这个,
错误提示是:意外的类型
?地方
需要变量
找到值
具体的我也想不通……我琢磨琢磨
回复 使用道具 举报
研究了一下参考了其他网上查到的资料,楼主编译错误的原因应该是:三元运算符是一个根据条件不同赋予变量不同的值,也就是说输出结果是一个值,java里面要储存一个值必须声明一个变量来存储的。
就是说 count++:count+=0;输出的结果count++或是count+=0不能单独存在。
写成count+=((x%7==0)?1:0);这样就编译通过了。
回复 使用道具 举报
for(int x=0;x<=100;x++)
{
    count = x%7==0?count+1:count;
}

这样就好了啊
回复 使用道具 举报
你看你那句
(x%7==0)?count++:count+=0;
三元运算符的表达式返回的可是一个值哦,不能单独成句的。
比如:
x;
你看这能单独成句不?显然不行…………
回复 使用道具 举报
                int count = 0;
                for (int x = 1; x <= 100; x++) {
                        if (x % 7 == 0)
                                count++;
                }
                System.out.println(count);

兄弟本来忒简单的东西感觉你搞的这复杂,上面是给你一个简单的方法
你的代码可以这样改下就OK了
count = (x%7==0)?count++: count;但是这样写运算结果不是你想要的
应该这样改写
count = (x%7==0)?++count: count;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马