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一个月整!视频全部看完了,感觉有点囫囵吞枣。。。。。
|
|