黑马程序员技术交流社区

标题: 算法问题 [打印本页]

作者: 马上都有    时间: 2014-4-15 18:52
标题: 算法问题
需求是获取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;
}
}
}
但是编译的时候报错了,实在想不通…
我也分析了下运行的流程,没发现错误呀…前辈们帮我检查下,谢谢啦!

作者: 环球信息中心    时间: 2014-4-15 18:56
亲,你的输出语句在哪里?你没有写出来啊
作者: 环球信息中心    时间: 2014-4-15 18:57
在初级阶段,尽量不要用复杂的方法解决问题,要一步一步来,由浅入深,到最后会水到渠成。加油
作者: kuroro自走核炮    时间: 2014-4-15 19:06
本帖最后由 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;
         }
    }
}
刚才眼瘸看错了……
唔,我自己写了一下这个,
错误提示是:意外的类型
?地方
需要变量
找到值
具体的我也想不通……我琢磨琢磨

作者: kuroro自走核炮    时间: 2014-4-15 19:36
研究了一下参考了其他网上查到的资料,楼主编译错误的原因应该是:三元运算符是一个根据条件不同赋予变量不同的值,也就是说输出结果是一个值,java里面要储存一个值必须声明一个变量来存储的。
就是说 count++:count+=0;输出的结果count++或是count+=0不能单独存在。
写成count+=((x%7==0)?1:0);这样就编译通过了。

作者: 曹冬明    时间: 2014-4-15 19:38
for(int x=0;x<=100;x++)
{
    count = x%7==0?count+1:count;
}

这样就好了啊
作者: 织语不如书    时间: 2014-4-15 20:10
你看你那句
(x%7==0)?count++:count+=0;
三元运算符的表达式返回的可是一个值哦,不能单独成句的。
比如:
x;
你看这能单独成句不?显然不行…………
作者: luoyilan222    时间: 2014-4-15 20:55
                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;





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2