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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚建锋 初级黑马   /  2012-7-24 13:15  /  2103 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
需求:  // 输入一个数,并求它们之间的数的累加和
*/
import java.util.*;
public class ShuRuQiuHe {
public static void main(String[] args) throws Exception {
  Scanner sc = new Scanner(System.in);
  int a = sc.nextInt();
  int b = sc.nextInt();
  int sum = 0;
  if (b >= 0) {
   for (int i = a; i <= b; i++) {
    sum += i;
   }
   System.out.println(sum);
  }
}
}
//想做负数累加求和的问题,但尝试了,做不通,请问对于负数这个功能能实现吗,怎么实现呢?
上面的执行情况如图:

2--9.jpg (14.75 KB, 下载次数: 306)

测试2+...+9

测试2+...+9

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 加油!

查看全部评分

6 个回复

倒序浏览
完全可以实现的。
稍微加个判断就可以了,
  1. public static void main(String[] args) {
  2.                   Scanner sc = new Scanner(System.in);
  3.                   int a = sc.nextInt();
  4.                   int b = sc.nextInt();
  5.                   int sum = 0;
  6.                   if(a>b){
  7.                    for (int i = b; i <= a; i++) {
  8.                     sum += i;
  9.                    }
  10.                    System.out.println(sum);
  11.                   }
  12.                   else{
  13.                           for (int i = a; i <= b; i++) {
  14.                                     sum += i;
  15.                                    }
  16.                                    System.out.println(sum);
  17.                   }
  18.         }
复制代码
你再试下,这个正数负数通吃的。

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
import java.util.*;
public class Test2 {
        public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int sum = 0;
        if(a<b)
        {
                   for (int i = a; i <= b; i++)
                    sum += i;
        }
           System.out.println(sum);
  }
}
你的判断条件有问题的  (b>=0 )这样输入负数就会出错的
回复 使用道具 举报
public static void main(String[] args) {

                  Scanner sc = new Scanner(System.in);

                  int a = sc.nextInt();

                  int b = sc.nextInt();

                  if(a>b){
                        int temp = a;
                         a = b;
                         b = temp;
                  }

                  int sum = 0;

                   for (int i = a; i <= b; i++) {

                    sum += i;

                   }

                   System.out.println(sum);
        }

判断a和b的大小,进行交换就可以通吃啦,不必要搞两次循环。
回复 使用道具 举报
你的判断有问题,只有个b>0能判断什么呢???你还要考虑以下几种情况:1.当啊a>b>0的时候2.当b<0的时候 3.0>b>a的时候,这三种情况下,你的程序都只能得到sum的初始值0.
所以要在判断上更改一下,以适应各种情况
1.当a>b的时候,循环从b到a累加
2.当b>a的时候,循环从a到b累加
回复 使用道具 举报
我个人喜欢肖琦的,先判断A,B.将小的做为启始,大的做为结束。
1,输入两个数,
2,a为小的,b为大的
3,for(a~b)就ok了。
感谢楼主的scanner.看视频这么常时间,还没注意过scanner呢
回复 使用道具 举报
  1. package test1;

  2. import java.util.Scanner;

  3. public class Test {
  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);
  6.                
  7.                 System.out.print("Please input : ");
  8.                 int a = sc.nextInt();
  9.                 System.out.print("Please input : ");
  10.                 int b = sc.nextInt();
  11.                 int sum = 0;

  12.                 if (a > b) {
  13.                         a = a ^ b;
  14.                         b = a ^ b;
  15.                         a = a ^ b;
  16.                 }

  17.                 for (int i = a; i <= b; i++) {
  18.                         sum += i;
  19.                 }
  20.                 System.out.println("sum = " + sum);
  21.         }
  22. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马