package day05;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;
import java.util.*;
public class homework3 {
public static void main(String[] args) throws Exception {
//求平均成绩
average();
System.out.println("=================按索引返回新列表========================");
//按索引返回新列表
List<Integer> nums= Arrays.asList(1,2,3,4,5,6);
List<Integer> nums2= Arrays.asList();
//正常用例
System.out.println("原始列表:"+nums+" 开始索引:"+0+" 结束索引:"+5+" 索引列表:"+index(nums,0,5));//正常 边界值
System.out.println("原始列表:"+nums+" 开始索引:"+3+" 结束索引:"+3+" 索引列表:"+index(nums,3,3));//正常begin==end
System.out.println("原始列表:"+nums+" 开始索引:"+1+" 结束索引:"+4+" 索引列表:"+index(nums,1,4));//正常begin<end
try {
System.out.print("原始列表:"+nums2+" 开始索引:"+3+" 结束索引:"+2 );
System.out.println("原始列表:"+nums+"索引列表:"+index(nums2,3,2));//异常:空列表
} catch (Exception e) {
System.out.println(" 异常信息为:"+e.getMessage());
e.printStackTrace();//打印调用栈
}
try {
System.out.print("原始列表:"+nums+" 开始索引:"+3+" 结束索引:"+2 );
System.out.println("原始列表:"+nums+"索引列表:"+index(nums,3,2));//异常:begin>end
} catch (Exception e) {
System.out.println(" 异常信息为:"+e.getMessage());
e.printStackTrace();//打印调用栈
}
try {
System.out.print("原始列表:"+nums+" 开始索引:"+-1+" 结束索引:"+5 );
System.out.println("原始列表:"+nums+"索引列表:"+index(nums,-1,5));//异常:begin<0边界值
} catch (Exception e) {
System.out.println(" 异常信息为:"+e.getMessage());
e.printStackTrace();//打印调用栈
}
try {
System.out.print("原始列表:"+nums+" 开始索引:"+0+" 结束索引:"+6 );
System.out.println("原始列表:"+nums+"索引列表:"+index(nums,0,6));//异常:end>5边界值
} catch (Exception e) {
System.out.println(" 异常信息为:"+e.getMessage());
e.printStackTrace();//打印调用栈
}
}
//1. 列表中存放着学生10次的成绩,去掉一个最高分,去掉一个最低分后,计算平均分。
public static void average(){
Scanner chengji=new Scanner(System.in);
System.out.println("请输入10个成绩");
LinkedList<Float> scores=new LinkedList<>();
for(int i=0;i<10;i++){
float score=chengji.nextFloat();
scores.add(score);
}
//打印学生成绩
System.out.println("学生成绩为:"+scores);
Collections.sort(scores);
float max=Collections.max(scores);
float min=Collections.min(scores);
scores.removeLast();
scores.removeFirst();
//打印去掉最高分和最低分后学生成绩
//System.out.println("去掉最高分和最低分后升序成绩:"+scores);
float sum=0;
for(int i=0;i<8;i++){
sum+=scores.get(i);
}
float avgscore=sum/8;
System.out.println("=====================平均成绩===========================");
System.out.println("去掉最高分"+max+" 去掉最低分"+min+" 后,平均成绩为"+avgscore);
}
// 2. 定义一个静态方法,类似python中切片的功能,参数1是一个整数列表,参数2是开始索引,参数3是结束索引。
// 返回包含开始、包含结束的子列表
// 比如传入 [1,2,3,4,5] , 1, 3 返回[2,3,4]
// (1)、对参数做检查。
// (2)、设计用例测试这个方法。
public static List<Integer> index(List<Integer> aa,int begin,int end) throws Exception {
LinkedList<Integer> bb=new LinkedList<>();
if(aa.size()==0){
throw new Exception ("输入为空列表,不合法");
}else if(0<=end&&end<begin&&end<aa.size()){
throw new Exception("初始索引大于结束索引,不合法");
}else if(begin>=aa.size()||end>=aa.size()||begin<0||end<0){
throw new Exception("索引值不在列表范围内,不合法");
}
for(int i=begin;i<=end;i++){
bb.add(aa.get(i));
}
return bb;
}
}
|