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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

//需求:使用不同方法求两数间的累加和
import java.util.*;
public class QiuHe {
public static void main(String[] args) throws Exception {
//while循环实现
  qiuHeWhile();
}
static void qiuHeWhile() {
  Scanner sc = new Scanner(System.in);
  int m = sc.nextInt();
  int n = sc.nextInt();
  int sum = 0;
//先输入小值再输入大值
  while (m <= n) {
   sum += m;
   m++;
   
  }
  /*先输入大的值再输小值
while (m > n) {
   sum += n;
   n++;
   
  }
*/
  System.out.println(sum);
}

}
/*
尝试使用for,while,递归实现输入两数间累加,在使用while循环时,只能实现输入的先后值中从小到大、从大到小的一种,使用while循环能
实现同时判断m<=n和m>n两种情况并能正确输出吗?怎么实现呢?
*/

点评

学习的过程中,就是要用勇于尝试自己的想法,你这种学习的方法很好,赞一个!加油!!!  发表于 2012-7-26 12:04

4 个回复

倒序浏览
  1. package test2;

  2. import java.util.*;

  3. public class Test2 {

  4.         public static void main(String[] args) throws Exception {
  5.                 qiuHeWhile();
  6.         }

  7.         static void qiuHeWhile() {
  8.                 Scanner sc = new Scanner(System.in);

  9.                 System.out.println("请输入一个整数:");
  10.                 int m = sc.nextInt();
  11.                 System.out.println("请再次输入一个整数:");
  12.                 int n = sc.nextInt();

  13.                 // 先确定那个是大数
  14.                 if (m > n) {
  15.                         int temp = m;
  16.                         n = m;
  17.                         m = temp;
  18.                         // 或者这样交换
  19.                         //n = n ^ m;
  20.                         //m = n ^ m;
  21.                         //n = n ^ m;
  22.                 }

  23.                 int sum = 0;
  24.                 while (m <= n) {
  25.                         sum += m;
  26.                         m++;
  27.                 }
  28.                 System.out.println(sum);
  29.         }
  30. }
复制代码
回复 使用道具 举报
加个判断再把循环反到判断后做,仔细分析下你的需求是什么,然后考量下如何确定if条件和while边界
  if(m<=n){
          while (m <= n) {
                   sum += m;
                   m++;
                  
                  }
  }else{
          while (m > n) {
                   sum += n;
                   n++;
                  }
  }
回复 使用道具 举报
刘春发 发表于 2012-7-24 23:32
加个判断再把循环反到判断后做,仔细分析下你的需求是什么,然后考量下如何确定if条件和while边界
  if(m ...

嗯~~if语句是能实现,因为用while语句能实现1+...+100的累加和,所以想尝试下能否使用while来实现输入的两数间累加的和~~~呵呵
回复 使用道具 举报
我在这插一句,如果确定求和的数据是连续的整数,那完全可以使用数学上的那个    ( 首项 + 尾项 )* 项目 / 2这个公式来计算了吧,肯定比那种累加的速度快多了吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马