黑马程序员技术交流社区

标题: 我是不是想得太多了?? [打印本页]

作者: ahuhxl    时间: 2014-7-21 08:49
标题: 我是不是想得太多了??
package com.itheima;
/*
编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数。
分析:
        题目需求有以下五点:
        1、键盘输入
        2、5个
        3、数字
        4、装入数组
        5、找出最值
思路:
        1、需要从键盘输入,所以要用到字节输入流,用BufferedReader提高效率
        2、规定输入的数字之间用逗号隔开,然后用split方法按逗号进行切割,存入数组
        3、用parseInt方法将字符串转换成数字,然后用for循环找出数组中的最大最小值
        (或者直接将其转换为int数组,然后用sort方法排序,取出第一个(最小值)和最后一个(最大值))
注意:
        1、当输入的数不是5个时,提示用户重新输入(按题目要求的做,其实可以不用限定输入个数)
        2、若输入的不是数字而是其他字符,提示用户输入错误
*/
import java.io.*;//导入IO包
class  Test8
{
        public static void main(String[] args)
        {
                boolean flag = true;//定义一个标记
                while(flag)//当标记改变时结束循环
                {
                        System.out.println("请输入5个整数,用逗号隔开,若要结束程序请输入end:");
                        try
                        {
                                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                                String line = null;
                                q:while((line=bufr.readLine())!=null)
                                {
                                        if("end".equals(line))
                                        {
                                                flag = false;//若输入结束标记end,就改变标记,让外循环停止
                                                break;
                                        }
       
                                        String[] str = line.split(",");//按逗号切割字符串
                                       
                                        if(str.length!=5)//判断输入的个数是否为5,若不为5就重新输入
                                        {
                                                System.out.println("您输入的不是5个数!");
                                       
                                                break;//跳出当前while循环
                                        }
                                for(int x=0;x<str.length;x++)
                                {
                                        if(!(str[x].matches("[0-9]+")))//判断输入的是否为纯数字,若不是请重新输入
                                        {
                                                System.out.println("您输入的不是纯数字!");
                                       
                                                break q;//跳出当前while循环
                                        }
                                }       
                                findMaxAndMin(str);//调用函数,找出最大最小值
                        }
                }
                catch (IOException e)
                {
                        throw new RuntimeException("程序运行失败!");
                }
        }
}

        public static void findMaxAndMin(String[] str)//寻找最大最小值函数
        {
                int max = Integer.parseInt(str[0]);//将字符串转换为数字
                int min = max;
                for(int x=1;x<str.length;x++)//遍历数组
                {
                        if(max<Integer.parseInt(str[x]))
                                max=Integer.parseInt(str[x]);//获取最大值
                        if(min>Integer.parseInt(str[x]))
                                min=Integer.parseInt(str[x]);//获取最小值
                }
                System.out.println("最大值为:"+max+"\n"+"最小值为:"+min);
        }

}

这是我的基础测试题,做完后感觉是不是太复杂了?是我想多了吗?

顺便mark一下,今天刚好是我接触Java一个月整!视频全部看完了,感觉有点囫囵吞枣。。。。。


作者: 渠嘉树    时间: 2014-7-21 08:53
囫囵吞枣。。。。。
作者: ☆枫の云    时间: 2014-7-21 11:57
我是来看头像的,有结果能运行就好,做的功能更多不是更好:lol




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