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);
}
}
}