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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jsfjb 中级黑马   /  2012-10-30 15:57  /  1849 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Scanner;

/**
* 输入一个数字组成的数组,输出该数组的最大值和最小值
*
* 这道题我做的跳出 的数字是 -1  并且我给max 和 min 都初始化为 0 。
* 我认为,做跳出的数字是 -1 和初始化 max 和min 不是一个特别好的方法。
*/

public class Test6 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
//                定义最大值和最小值,用来存变量
                int max = 0;
                int min = 0;

//                用来读取键盘上的输入。
                Scanner input = new Scanner(System.in);
               
//                创建一下循环用来不断的获取键盘上的数据。
                while(true){
                        int temp = input.nextInt();
//                        我做的跳出的出口
                        if(temp == -1){
                                break;
                        }
                       
//                        判断看输入的只是否比最大值大。
                        if(max < temp){
                                max = temp;
                        }
//                        判断看输入的值是否比最小值小。
                        if(min > temp){
                                min = temp;
                               
                        }
                }
//                最后完了输出最大值,和最小值。
                System.out.println("最大数是:"+max);
                System.out.println("最小数是:"+min);
        }
}


这道题看似很简单,但是,没有给max和min初始化值,就不能给赋值,但是赋值的话就存在问题了!

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
我好像的意思了,你是想让第一次输入的值赋值为最大值,并且是最小值。
防止输入全是正数或者全是负数导致MAX=0 或者MIN=0的 情况。
我的做法是定义一个计数器
  1. package test;

  2. import java.util.Scanner;

  3. /**
  4. * 输入一个数字组成的数组,输出该数组的最大值和最小值
  5. *
  6. * 这道题我做的跳出 的数字是 -1 并且我给max 和 min 都初始化为 0 。
  7. * 我认为,做跳出的数字是 -1 和初始化 max 和min 不是一个特别好的方法。
  8. */

  9. public class Test4 {

  10. /**
  11. * @param args
  12. */
  13. public static void main(String[] args) {
  14. // TODO Auto-generated method stub

  15. // 定义最大值和最小值,用来存变量
  16. int max = 0;
  17. int min = 0;

  18. // 用来读取键盘上的输入。
  19. Scanner input = new Scanner(System.in);

  20. // 创建一下循环用来不断的获取键盘上的数据。
  21. int x=0; //我的做法是做一个计数器
  22. while(true){
  23. int temp = input.nextInt();
  24. if(x==0){
  25. min=temp;//循环一旦开始,赋值
  26. max=temp;
  27. x++; //改变计数器,条件就不在成立
  28. }

  29. // 我做的跳出的出口
  30. if(temp == -1){
  31. break;
  32. }

  33. // 判断看输入的只是否比最大值大。
  34. if(max < temp){
  35. max = temp;
  36. }
  37. // 判断看输入的值是否比最小值小。
  38. if(min > temp){
  39. min = temp;

  40. }
  41. }
  42. // 最后完了输出最大值,和最小值。
  43. System.out.println("最大数是:"+max);
  44. System.out.println("最小数是:"+min);
  45. }
  46. }

复制代码
结果是

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
cz2861856 发表于 2012-10-30 16:10
我好像的意思了,你是想让第一次输入的值赋值为最大值,并且是最小值。
防止输入全是正数或者全是负数导致M ...

谢谢,明白了,第一次的时候给他们都重新赋值。以后好好整了。
再附加的问一下, 输入-1 的时候是跳出,这个问题,怎么解决。 因为-1也是一个数 用户也有可能输入 -1。
再次感谢您。
回复 使用道具 举报
别说您。我也很小,大家一起共同学习

我这个改的其实不是特别理想,不知道有没有哪位高人有良策
你先将就着看我的把。
  1. package test;

  2. import java.util.Scanner;
  3. public class Test4 {

  4. /**
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. //为了看着清晰,我把一些注释删掉了
  9. int max = 0;
  10. int min = 0;
  11. Scanner input = new Scanner(System.in);
  12. int x=0; //我的做法是做一个计数器
  13. while(true){
  14. String temp_str = input.next();
  15. //改用over为结束,因为值有可能是-1
  16. //因为该为字符串输入,所以安全性差了点,需要加入一些其他判断是否是数字,我省略了
  17. if(temp_str.equals("over")){//如果是over就跳出
  18. break;
  19. }
  20. int temp=Integer.parseInt(temp_str);//类型转换
  21. if(x==0){
  22. min=temp;//循环一旦开始,赋值
  23. max=temp;
  24. x++; //改变计数器,条件就不在成立
  25. }

  26. /* 因为值也有可能是-1,所以这个跳出我舍弃了,改用over
  27. if(temp == -1){
  28. break;
  29. }*/

  30. // 判断看输入的只是否比最大值大。
  31. if(max < temp){
  32. max = temp;
  33. }
  34. // 判断看输入的值是否比最小值小。
  35. if(min > temp){
  36. min = temp;

  37. }
  38. }
  39. // 最后完了输出最大值,和最小值。
  40. System.out.println("最大数是:"+max);
  41. System.out.println("最小数是:"+min);
  42. }
  43. }

复制代码
回复 使用道具 举报
还记得毕老师在讲自定义读取缓冲流时,为了避免读取到的第一个字节是-1与判定条件冲突而&255的那个办法么?可以试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马