JAVA程序设计----练习题

    xiaoxiao2022-07-04  133

    1.已知数组int[] arr = {1,54,3,87,108,77,56,35,20};(10) * 设计一个工具类,完成以下功能: * 1)计算出数组中所有的奇数和、偶数和 *  2)利用冒泡排序方式对数组进行排序(从大到小)

    import java.util.Arrays; /** * 1.已知数组int[] arr = {1,54,3,87,108,77,56,35,20};(10) * 设计一个工具类,完成以下功能: * 1)计算出数组中所有的奇数和、偶数和 * 2)利用冒泡排序方式对数组进行排序(从大到小) */ public class exam1one { public static void main(String[] args) { int[] arr = {1,54,3,87,108,77,56,35,20}; SumUtil.Sum(arr); SumUtil.Sort(arr); } } //工具类 class SumUtil{ public static void Sum(int[] arr){ int jishuSum = 0; int oushuSum = 0; for (int i = 0; i < arr.length; i++) { if (arr[i]%2 == 0){ oushuSum += arr[i]; }else{ jishuSum += arr[i]; } } System.out.println("奇数和是:"+jishuSum+",偶数和是:"+oushuSum); } public static void Sort(int[] arr){ for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-i-1; j++) { if (arr[j] < arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } System.out.println(Arrays.toString(arr)); } }

    2.小明去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?(10)

    import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; /** * 小明去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?(10) */ public class exam1two { public static void main(String[] args) { int ave = 0,sum = 0; System.out.println("请输入10个评委的打分:"); Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add(scanner.nextInt()); } Collections.sort(list);//做一个排序从小到大 list.remove(0);//删除最小的 list.remove(list.size()-1);//删除最大的 list.forEach(s->System.out.print(s+"->")); for (int i = 0; i < list.size(); i++) { sum += list.get(i); ave = sum/list.size(); } System.out.println("平均分为:"+ave); } }

    3.鸟类和昆虫类都具有飞行的功能,虽然这个功能相同,但是这两个类中其他功能不同, * 所以将飞行功能单独设计在接口中,按如下设计编写程序。(10) * 飞行接口:飞行的方法fly *  鸟类(birds):属性 - 名称   功能 – 生蛋 layEgg * 昆虫类(insecta):属性 – 姓名  功能 – 产卵 oviposition * 鸽子(dove)继承自鸟类, 蜜蜂(bee)继承自昆虫类 *  在测试类中 * A.创建鸽子对象,实现飞行和生蛋的方法 * B.创建蜜蜂对象,实现飞行和生蛋的方法

    public class exam1three { //测试 public static void main(String[] args) { dove d = new dove(); d.fly(); d.layEgg(); bee b = new bee(); b.fly(); b.oviposition(); } } //鸽子类 class dove extends birds implements sky{ @Override public void fly() { System.out.println("我是鸽子,我会飞行"); } @Override public void layEgg() { System.out.println("我是鸽子,我会生蛋"); } } //蜜蜂类 class bee extends insecta implements sky{ @Override public void fly() { System.out.println("我是蜜蜂,我会飞行"); } @Override public void oviposition() { System.out.println("我是蜜蜂,我会产卵"); } } //飞行接口 interface sky{ //飞行方法 public void fly(); } /** * 鸟类 * 抽象类 */ abstract class birds{ private String name; //用abstract修饰抽象方法,只有声明,没有实现 public abstract void layEgg(); public birds(String name) { this.name = name; } public birds() { } } /** * 昆虫类(抽象类) */ abstract class insecta{ private String name; public abstract void oviposition();// public insecta(String name) { this.name = name; } public insecta() { } }

    4.设计一个程序,使用TreeSet集合存储Student类对象, * Student类包含name、age、score三个属性,(10) * 要求设计一个测试类,完成 * 增加学生 * 排序行为:对姓名进行升序排序,如果姓名一样,对年龄进行降序排序,如果年龄一样,对成绩进行升序排序。 * 【注】如果把一个对象添加到TreeSet集合,则该对象必须实现Comparable接口,否则程序会抛出ClassCastException异常。

    import java.util.TreeSet; public class exam1four { public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(new Student("李冬",18,16)); ts.add(new Student("李冬",16,98)); ts.add(new Student("李冬",20,36)); ts.add(new Student("李冬",20,80)); ts.add(new Student("董康",16,100)); for (Object o : ts){ System.out.println(o.toString()); } } } //Student类 class Student implements Comparable{//接口让学生具有比较性 private String name; private int age; private int score; public Student() { } public Student(String name, int age, int score) { this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", score=" + score + '}'; } //对姓名进行升序排序,如果姓名一样,对年龄进行降序排序,如果年龄一样,对成绩进行升序排序。 //compareTo(Object o)在方法中实现对象大小的比较。当该方法被调用时, // obj1.compareTo(obj2),该方法返回值为1时,说明obj1>obj2; // 返回值为0时,说明obj1=obj2; // 返回值为-1时,说明obj1<obj2; @Override public int compareTo(Object o) { if (!(o instanceof Student)){ throw new RuntimeException("不是学生"); } Student s = ((Student) o); if (this.name.compareTo(s.name) == 0) { if (this.age == s.age){ return this.score - s.score; } return s.age - this.age; } return -1; } }

    5.使用Scanner从控制台读取一个字符串,使用集合统计字符串中每个字符出现的次数,例如  abcabcdef(15) * a(3)b(2)c(3)d(1)e(1)f(1)

    import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; /** * 使用Scanner从控制台读取一个字符串,使用集合统计字符串中每个字符出现的次数,例如 abcabcdef(15) * a(3)b(2)c(3)d(1)e(1)f(1) */ public class exam1five { public static void main(String[] args) { Map<String,Integer> map = new HashMap<>(); System.out.println("请依次输入9个字符:"); Scanner scanner = new Scanner(System.in); String[] str = new String[9]; for (int i = 0; i < str.length; i++) { str[i] = scanner.next(); } for (int i = 0; i < str.length; i++) { if (map.get(str[i]) == null){//get()返回指定键所映射的值,如果此映射不包含该键的映射关系,则返回null map.put(str[i],1);//put()将指定的值与此映射中的指定键关联。 }else{ map.put(str[i],map.get(str[i])+1); } } // map.forEach((key,value)->System.out.println(key+"("+value+")")); Set<String> keys = map.keySet(); for (String k : keys){ System.out.print(k+"("+map.get(k)+")"); } } }

    6.(1)在D盘下创建一个文件为HelloWorld.tx文件,在程序中写一个(20) * "HelloJavaWorld你好世界"输出到文件HelloWorld.txt文件中 * (2)在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; /** * (1)在D盘下创建一个文件为HelloWorld.tx文件,在程序中写一个(20) * "HelloJavaWorld你好世界"输出到文件HelloWorld.txt文件中 * (2)在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去 */ public class exam1six { public static void main(String[] args) throws IOException { File file = new File("D://HelloWorld.txt"); System.out.println("请输入要保存的内容:"); int count,n = 512; byte[] b = new byte[n]; FileOutputStream fos = null; count = System.in.read(b); fos = new FileOutputStream("D://HelloWorld.txt",true); fos.write(b,0,count); System.out.println("成功保存!"); fos.close(); File mkdir = new File("D://IOTest"); mkdir.mkdirs();//创建一个目录,他的路径名由当前File对象指定,包括任一必须的父路径。 file.renameTo(new File(mkdir.getPath() + "/" + file.getName())); //将当前File对象指定的文件更名为给定参数file指定的路径名。 System.out.println("移动完毕!"); } }

    7.1)将若干个Student对象;写出到d:/a.txt中,(15) *   2)将该文件中所有的Student对象反序列化回来 * <详情见JAVA程序开发----IO流下>

    import java.io.*; public class exam1seven { public static void main(String[] args) throws IOException, ClassNotFoundException { Students stu1 = new Students(1,"李冬"); Students stu2 = new Students(2,"李孟冬"); Students stu3 = new Students(3,"冬李孟"); Students stu4 = new Students(4,"李冬孟"); FileOutputStream fos = new FileOutputStream("D://a.txt"); //序列化 ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(stu1); oos.writeObject(stu2); oos.writeObject(stu3); oos.writeObject(stu4); System.out.println("已写入!"); FileInputStream fis = new FileInputStream("D://a.txt"); //反序列化 ObjectInputStream ois = new ObjectInputStream(fis); Students s1 = ((Students) ois.readObject()); Students s2 = ((Students) ois.readObject()); Students s3 = ((Students) ois.readObject()); Students s4 = ((Students) ois.readObject()); System.out.println(s1.getId()+"->"+s1.getName()); System.out.println(s2.getId()+"->"+s2.getName()); System.out.println(s3.getId()+"->"+s3.getName()); System.out.println(s4.getId()+"->"+s4.getName()); } } class Students implements Serializable{ private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Students() { } public Students(Integer id, String name) { this.id = id; this.name = name; } }

    8.定义一个线程A,输出1 ~ 10之间的整数,定义一个线程B,逆序输出1 ~ 10之间的整数(10)

    public class exam1eight { public static void main(String[] args) { ThreadA t1 = new ThreadA(); ThreadB t2 = new ThreadB(); new Thread(t1,"线程A").start(); new Thread(t2,"线程B").start(); } } class ThreadA implements Runnable{ @Override public synchronized void run() { for (int i = 1; i < 10; i++) { try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"->"+i); } } } class ThreadB implements Runnable{ @Override public synchronized void run() { for (int i = 10; i > 0; i--) { try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"->"+i); } } }

     

    最新回复(0)