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

© 湛添友 中级黑马   /  2014-4-20 01:06  /  1284 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//当直接敲回车时  会出现异常 怎么解决这个问题呢?

package com.itheima;

/**
* 编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数
  *
*
*思路:  接受键盘输入  用到输入流
*        然后把读取到的数据存入到 一个数组  既然 比较大小 这里以int型数组为例】
       *、定义长度为5的数组  接收每次敲入的数组
当敲入了五个数字后 直接屏幕输出最大值和最小值
      
*        
*/
import java.io.*;
public class Text7
{
        public static void main(String args[])
        {
                getNum();
        }
        //创建字节流  接受键盘录入数据
        public static void getNum()
        {
                int[] arr=new int[5];//定义一个数组来存储键盘录入
                int pos=0,count=0;//定义 指针与计数器
                //键盘录入标准
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                //BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
                //InputStream is=System.in;
                String s=null;
                try
                {
                        while((s=br.readLine())!=null)
                        {
                                if(s.equals("over"))
                                        break;
                                if(!s.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"))//判断字符串是否为数字
                                        throw new NumberFormatException("请输入数字");       
                                       
                               
                                        arr[pos]=Integer.parseInt(s);
                                        count++;
                                        pos++;
                               
                                if(count==5)//接受了五个数时直接打印最大值和最小值
                                {   
                                        int max=getMax(arr);
                                        int min=getMin(arr);
                                        System.out.println( "最大值::"+max+"最小值::"+min);
                                        System.out.println("退出请输入:over");
                                        pos=0;//清零
                                        count=0;
                                }
                        }
                }catch(IOException e){}
                finally //关闭资源
                {
                        if(br!=null)
                                try
                        {
                        br.close();
                        }catch(IOException e){}
                }
               
        }
        //获取最大值于最小值
        public static int getMax(int[] arr)
        {
                int max=arr[0];
                for(int x=1;x<arr.length;x++)
                {
                        if(max<arr[x])
                                max=arr[x];
                }
                                return max;
        }
        //获取最小值
        public static int getMin(int[] arr)
        {
                int max=0;
                for(int x=1;x<arr.length;x++)
                {
                        if(arr[max]>arr[x])
                                arr[max]=arr[x];
                }
                                return arr[max];
        }
       
}






















评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

3 个回复

倒序浏览
  1. import java.io.*;
  2. public class Text7
  3. {
  4.         public static void main(String args[])
  5.         {
  6.                 getNum();
  7.         }
  8.         //创建字节流  接受键盘录入数据
  9.         public static void getNum()
  10.         {
  11.                 int[] arr=new int[5];//定义一个数组来存储键盘录入
  12.                 int pos=0,count=0;//定义 指针与计数器
  13.                 //键盘录入标准
  14.                 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  15.                 //BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
  16.                 //InputStream is=System.in;
  17.                 String s=null;
  18.                 try
  19.                 {
  20.                         while((s=br.readLine())!=null)
  21.                         {
  22.                                                                 if(s.equals(""))//这里加上就好了
  23.                                                                         continue;
  24.                                 if(s.equals("over"))
  25.                                         break;
  26.                                 if(!s.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"))//判断字符串是否为数字
  27.                                         throw new NumberFormatException("请输入数字");        
  28.                                        
  29.                                 
  30.                                         arr[pos]=Integer.parseInt(s);
  31.                                         count++;
  32.                                         pos++;
  33.                                 
  34.                                 if(count==5)//接受了五个数时直接打印最大值和最小值
  35.                                 {   
  36.                                         int max=getMax(arr);
  37.                                         int min=getMin(arr);
  38.                                         System.out.println( "最大值::"+max+"最小值::"+min);
  39.                                         System.out.println("退出请输入:over");
  40.                                         pos=0;//清零
  41.                                         count=0;
  42.                                 }
  43.                         }
  44.                 }catch(IOException e){}
  45.                 finally //关闭资源
  46.                 {
  47.                         if(br!=null)
  48.                                 try
  49.                         {
  50.                         br.close();
  51.                         }catch(IOException e){}
  52.                 }
  53.                
  54.         }
  55.         //获取最大值于最小值
  56.         public static int getMax(int[] arr)
  57.         {
  58.                 int max=arr[0];
  59.                 for(int x=1;x<arr.length;x++)
  60.                 {
  61.                         if(max<arr[x])
  62.                                 max=arr[x];
  63.                 }
  64.                                 return max;
  65.         }
  66.         //获取最小值
  67.         public static int getMin(int[] arr)
  68.         {
  69.                 int max=0;
  70.                 for(int x=1;x<arr.length;x++)
  71.                 {
  72.                         if(arr[max]>arr[x])
  73.                                 arr[max]=arr[x];
  74.                 }
  75.                                 return arr[max];
  76.         }
  77.         
  78. }
复制代码
我帮你改完了,主要是因为Integer.parseInt(str),里面接收的字符串只能是数字,整数负数都可以,但是,你直接回车输入的是空字符串,所以就会报NumberFormatException,所以你前面多加个判断条件就好了

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
湛添友 来自手机 中级黑马 2014-4-20 08:31:27
藤椅
嗯嗯,感谢
回复 使用道具 举报
我的代码没有楼主考虑的那么全面,,可以参考一下!!!
Scanner sc = new Scanner(System.in);//创建键盘录入功能
                System.out.println("请输入5个数字");   //提示用户输入
                int[] arr = new int[5];      //定义一个长度为5的数组,来存入用户输入的数字
                for (int i = 0; i < 5; i++) {  
                        String line = sc.nextLine();   //对用户输入的数字接收
                        arr[i] = Integer.parseInt(line);// 把接收到的字符串转成int数字  装进数组
                }
                Arrays.sort(arr);   //对数组进行升序排序
                int min = arr[0];    //最小值出现在0角标
                int max = arr[arr.length - 1]; //最大值在最后的角标位置
                System.out.println("min=" + min);
                System.out.println("max=" + max);
回复 使用道具 举报 2 0
您需要登录后才可以回帖 登录 | 加入黑马