练习1:键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
分析:
键盘输入,创建键盘对象以0结束----while条件,输入0则break跳出循环
由于不知道元素的个数,长度不固定,必须用集合;
不能用数组原因:数组长度固定,由于不知道数据的个数 ;
TreeSet集合具有自然排序的功能
代码
package 测试2;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
/*
* *****************************
* 思考1:如果要统计最大值的个数,该怎么办?
* 分析:此时显然用TreeSet不行,那怎么办?
* 可以用ArrayList存储元素,然后将集合转化成数组; 利用数组的方法进行排序,找到最大值,对数组遍历统计最大值个数
* *******************************
* 思考2:
* 如果要将字符串(数字)进行排序呢?
* 已知字符串(数字),以空格隔开-----String的split方法,转换成字符串的数组
* 然后利用Integer的parseInt方法将数字字符串转换成整型
*/
public class DemoHomeWork {
public static void main(String[] args) {
// 创建集合,存储元素
TreeSet<Integer> set = new TreeSet<Integer>();// 无参:默认自然排序
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("请输入数据:");
int a = sc.nextInt();// 存储变量
set.add(a);
if (a == 0) {
break;
}
}
// 元素输入完了,以0结束
//方法1
System.out.println("元素排序为:" + set);
Object[] obj=set.toArray();
System.out.println(obj[obj.length-1]);//多态形式
//方法2
/**
* 或者:说明:<T> T[] toArray(T[] a)------T=Integer
*/
Integer[] arr = set.toArray(new Integer[set.size()]);
System.out.println("最大值为:" + arr[arr.length - 1]);
// 或者
System.out.println("最大值为:" + arr[arr.length - 1].intValue());
// 方法3
//创建迭代器对象----迭代器遍历过程中找到最大值(依赖于TreeSet排序)
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
Integer temp=it.next();
if(it.hasNext()==false){
System.out.println("最大值为:"+temp);
}
}
}
}
未完待续......