java简单习题

作业1:
    给定一个大小为 n 的数组 nums ,返回其中的多数元素。
    多数元素是指在数组中出现次数 大于  n/2 的元素。

    [1,1,1,1,2,3,3]    

分析:多数元素是指在数组中出现次数 大于  n/2 的元素。所以多数元素应该是中位数元素。

我们可以先对数组进行排序,再找中位数元素

package com.openlab.day13;

public class Work01 {

	public static void main(String[] args) {
		int[] nums = new int[] {1, 2, 3, 1, 3, 1, 1};
		Solution solution = new Solution();
		solution.sort(nums);//先排序
		int num = solution.findMoreNum(nums);//再找中位数
		System.out.println("多数元素是:" + num);
	}

}

class Solution {
	//找中位数
    public int findMoreNum(int[] nums) {
        //分奇偶数获取中位数
        if((nums.length & 1) == 0){//偶数
           int s1 = nums[nums.length / 2];
        	int s2 = nums[(nums.length / 2) - 1];
            return (s1 + s2) / 2;
        }else{
            return nums[nums.length / 2];
        }
    }
    
    //排序
    public void sort(int[] nums) {
    	for(int i = 0; i < nums.length - 1; i++) {
    		for(int j = i + 1; j < nums.length; j++) {
    			if(nums[i] < nums[j]) {
    				nums[i] = nums[i] ^ nums[j];
    				nums[j] = nums[i] ^ nums[j];
    				nums[i] = nums[i] ^ nums[j];
    			}
    		}
    	}
    }
}

作业2:综合案例(用户博客管理系统):

package com.openlab.day13;

import java.util.Scanner;

public class Work02 {
	public static void main(String[] args) {
		
		Blog blog = new Blog();
		Scanner input = new Scanner(System.in);
		blog.menu();
		System.out.print("请输入您的选项:");
		int choice1 = input.nextInt();
		
		switch(choice1) {
		case 1:
			System.out.println("~~~~~~用户注册~~~~~~");
			System.out.println("请输入您的用户名");
			String name1 = input.next();
			System.out.println("请输入您的密码:");
			String password1 = input.next();
			System.out.println("请确认您的密码:");
			String password2 = input.next();
			if(password1.equals(password2)) {
				System.out.println("恭喜您,注册成功");
			}
			break;
		case 2:
			System.out.println("~~~~~~用户登录~~~~~~");
			System.out.print("请输入您的用户名");
			String name = input.next();
			System.out.print("请输入您的密码:");
			String password = input.next();
			System.out.println("恭喜您,登录成功");
			break;
		}
		blog.menu1();
		System.out.print("请输入您的选项:");
		int choice2 = input.nextInt();
		switch(choice2) {
		case 1:
			System.out.println("~~~~~~发表博客~~~~~~");
			System.out.print("请输入您标题:");
			String title = input.next();
			System.out.println("请输入您的正文内容:");
			String content = input.nextLine();
			System.out.println("请输入您的文章概述:");
			String outline = input.nextLine();
			System.out.println("博客发表成功!");
			System.out.println(title);
			System.out.println(content);
			System.out.println("文章概述:" + outline);
			break;
		case 2:
			System.out.println("~~~~~~进入社区~~~~~~");
			break; 
		}
		input.close();
	}
}

class Blog{
	public void menu() {
		System.out.println("~~~~~~欢迎进入博客系统~~~~~~");
		System.out.println("\t1. 用户注册");
		System.out.println("\t2. 用户登录");
	}
	
	public void menu1() {
		System.out.println("~~~~~~欢迎进入~~~~~~");
		System.out.println("\t1. 发表博客");
		System.out.println("\t2. 进入社区");
	}
	
}

作业3:(抽象类)
定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量 
    1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有) 
    再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法 
    该方法不返回任何值 同时至少定义两个构造方法。Role类中要体现出this的几种用法。
    2. 从Role类派生出一个"Employee"类 该类具有Role类的所有成员 
    构造方法除外 并扩展 salary成员变量 同时增加一个静态成员变量“职工编号 ID ”。
    同样要有至少两个构造方法 要体现出this和super的几种用法 
    还要求覆盖play()方法 并提供一个final sing()方法。 
    3. "Manager"类继承"Employee"类 有一个final成员变量"vehicle" 
    4. 在main()方法中制造Manager和Employee对象,并测试这些对象的方法

package com.openlab.day13;

public abstract class Role {
	private String name;//姓名
	private int age;//年龄
	private String gender;//性别
	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 String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	 
	public Role() {//无参构造方法
		System.out.println("这是Role的无参构造方法");
	}
	
	public Role(String name, int age, String gender) {//有参构造方法
		super();
		this.name = name;
		this.age = age;
		this.gender = gender;
		System.out.println("这是Role的有参构造方法");
	}
	
	public abstract void play();
}
package com.openlab.day13;

public class Employee extends Role {
	private double salary;//扩展成员
	private static int id;//静态成员变量
	
	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	public static int getId() {
		return id;
	}

	public static void setId(int id) {
		Employee.id = id;
	}

	public Employee() { 
		super();
		System.out.println("这是Employee的无参构造方法");
	} 

	public Employee(double salary) {
		super();
		this.salary = salary;
		System.out.println("这是Employee的有参构造方法");
	}

	@Override
	public void play() {
		System.out.println("我会去户外做运动");

	}
	
	public final void sing() {
		System.out.println("我会唱很多流行歌曲");
	}
	
	public static void say() {
		System.out.println("hello");
	}
}
package com.openlab.day13;

public class Manager extends Employee {
	private final String VEHICLE = "小汽车";
	private double money;//金钱

	public String getVEHICLE() {
		return VEHICLE;
	}
	
	public double getMoeney() {
		return money;
	}

	public void setMoeney(double moeney) {
		this.money = moeney;
		System.out.println("这是Manager的有参构造方法");
	}

	public Manager() {
		super();
		System.out.println("这是Manager的无参构造方法");
	} 
	
	public Manager(double money) {
		super(2345);  
		this.money = money;
		System.out.println("这是Manager的有参构造方法");
	}

}
package com.openlab.day13;

public class Work02 {

	public static void main(String[] args) {
		Manager manager1 = new Manager();
		//manager.VEHICLE;私有报错
		System.out.println(manager1.getVEHICLE());//final,只能访问不能修改
		
		System.out.println("-----------------------");//分隔
		Manager manager2 = new Manager(51323.4865);//调用Manager的有参构造方法
		System.out.println(manager2.getMoeney());//获取Manager属性
		manager2.setMoeney(486465); //修改Manager属性
		System.out.println(manager2.getMoeney());
		
		System.out.println("-----------------------");//分隔
		
		Employee employee = new Employee();
		employee.sing();//用对象调用普通方法
		Employee.say();//用类名调用静态方法
	}

}

作业4:(抽象类)
品尝饮料
1、建立一个Java抽象类Drink 应当 a、声明一个抽象方法taste() 该方法负责输出饮料的味道 b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶 如 c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。
2、建立Drink的具体子类 a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ; b、实现taste()方法 要求在的控制台打印各自味道特征。
3、建立异常类DrinkNotFoundException a、继承Exception b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常 当传入的参数没有相对应的饮料类型时 抛出异常。 c、在使用getDrink方法的类中捕捉该异常。
4、建立Test测试类 测试以上内容的正确性 a、编写main方法 通过命令行传参的方式传入某种饮料的类型。 b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。注意捕获DrinkNotFoundException。 c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
5、编译程序 并运行。
注意事项 1、仔细审题 把题目要求理解准确 2、请注意多态性的运用 3、请注意代码的书写、命名符合规范 应有适当的注释

package com.openlab.day13;

public abstract class Drink {

	abstract void taste(); //负责输出饮料的味道
	public static Drink getDrink(int drinkType) {//获得相应的饮料对象
		Drink drink = null;
		switch(drinkType) {
			case 1:
				drink = new Coffee();
				break;
			case 2:
				drink = new Beer();
				break;
			case 3:
				drink = new Milk();
				break;	
		}
		return drink;
	}
}
package com.openlab.day13;

public class Coffee extends Drink {
 
	@Override
	void taste() {
		System.out.println("浓香,略苦");
	}

}
package com.openlab.day13;

public class Beer extends Drink {

	@Override
	void taste() {
		System.out.println("酒精的香味,味涩");
	} 

}
package com.openlab.day13;

public class Milk extends Drink {

	@Override
	void taste() {
		System.out.println("浓香,甜味,奶牛的味道");
	}
 
}
package com.openlab.day13;

public class Work04 {

	public static void main(String[] args) {
		Drink drink = Drink.getDrink(3);
		drink.taste();
	}
	
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值