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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴扬 中级黑马   /  2012-6-12 20:50  /  2402 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴扬 于 2012-6-18 01:25 编辑

一本教材上的练习,不多说,代码如下:

  1. public class Exercise03 {
  2.         public static void main(String[] args) {
  3.                 float sum = 0;
  4.                 for(int i = 1; i <= 100; i++)
  5.                 {
  6.                         sum = sum + (1%i);   //问题在这,如果是用“/”,那么就会取整数,如果是用“%”,结果就会取余数,有什么办法解决呢?
  7.                 }
  8.                 System.out.println(sum);
  9.         }

  10. }
复制代码

14 个回复

倒序浏览
double sum = 0.0;
sum += 1/i
回复 使用道具 举报
你那个是模(%),是求余数的, 除号是(/)
回复 使用道具 举报
林豪 发表于 2012-6-12 20:53
你那个是模(%),是求余数的, 除号是(/)

“/”这个符号是取整啊,我要的是1/i的结果,不是取整,而是小数的和啊!
回复 使用道具 举报
如果你只是想要答案的话,在EditPlus 或JCreaotor中运行一下就出来了
回复 使用道具 举报
张洁 发表于 2012-6-12 20:53
double sum = 0.0;
sum += 1/i

sum = sum+(1/i);这个运算出来的结果是1啊,除了1以外,除以i的任何值取整数都是0啊!
回复 使用道具 举报
  1. public class Sum{

  2.         public static void main(String[] args) {

  3.                 double sum = 0;

  4.                 for(double i = 1.0; i <= 100.0; i++)

  5.                 {

  6.                         sum +=(1/i);   //问题在这,如果是用“/”,那么就会取整数,如果是用“%”,结果就会取余数,有什么办法解决呢?

  7.                 }

  8.                 System.out.println(sum);

  9.         }


  10. }
复制代码
不要定义int类型,定义double类型就可以了!

回复 使用道具 举报
金鑫 中级黑马 2012-6-12 21:06:03
8#
本帖最后由 金鑫 于 2012-6-12 21:15 编辑


  1. <BLOCKQUOTE>
  2. <P> public class Demo1 {</P>
  3. <P> /**
  4.   * @param args
  5.   */
  6. public static void main(String[] args) {
  7.   // TODO Auto-generated method stub
  8.   double sum = 0;
  9.   for (int i = 1; i <=100; i++) {
  10.    sum+=1/(double)i;
  11.   }
  12.   System.out.println(sum);
  13. }</P>
  14. <P>}</P>
复制代码
回复 使用道具 举报
结果运行,我做的是5050
代码是
class Sum
{
        public static void main(String[] args)
        {
                int i=0,sum=0;
                for(i=1;i<=100;i++)
                {
                        sum = sum + i;
                }
                System.out.println("sum="+sum);
        }
}
回复 使用道具 举报
好吧,我承认我错了。。。。
回复 使用道具 举报
兄台,你应该定义成double或者float型的。否则1/i都是0.详见毕老师视频
回复 使用道具 举报
金鑫 发表于 2012-6-12 21:06
public class Demo1 {

        /**

问题解决了,谢谢啦!原来是数据类型的问题!
回复 使用道具 举报
在MyEclipse里面格式是正常的,不知道复制过来怎么变成这这样了。
回复 使用道具 举报
这个确实是数据类型的问题....不过这个问题有一个非常容易的解决办法:
只需要1/i改为1.0/i
  1. public static void main(String[] args) {
  2.                 double sum = 0;
  3.                 for(int i = 1; i <= 100; i++)
  4.                 {
  5.                         //sum = sum + (1/i);
  6.                     sum = sum + (1.0/i);   //只需要1/i改为1.0/i
  7.                 }
  8.                 System.out.println(sum);
  9.         }
复制代码
回复 使用道具 举报
这样看起来比较好,1.0/i,i会自动提升为double类型的吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马