java作业2

1、十进制转二进制

Description

编写代码,要求:输入参数是一个正整数,输出该整数所对应的二进制数对应的字符串。

Input

正整数

Output

输入的正整数对应的二进制字符串“1001”

Sample Input

9

Sample Output

1001

HINT

答案:

import java.util.*;

public class Main 
{
    public static void main(String[] args) 
    {
        Scanner scan=new Scanner(System.in);
        int i=scan.nextInt();
        String  resule="";
        while(i>1)
        {
            resule=i%2+resule;
            i=i/2;
        }
        resule=i+resule;
        System.out.println(resule);
    }
}

思路:

在做进制转换的题的时候,总是无从下手,因为没有掌握好进制转换的要点,进制转换存的总体思路是:对要进行进制转换的数字不断取余,然后做除法,直到数字为0时就不再取余,然后逆序输出取余的数字,也就是最后获得的余数最先输出。

注意点:

(1)刚开始没有想到如何采用逆序输出,本来想用数组的方式做题,但是发现并不知道数组应该开多么大,所以思路卡住了

(2)其实可以用Sring类型的对象来存,这个时候又卡在了逆序上

(3)其实可以在加的顺序上进行改变,注意是resule=i%2+resule;而不是resule=resule+i%2;因为要逆序输出,所以后来的要保存到String类型对象的最前面,这样才能保证后进的最先出。


2、学生类

Description

class Student
{
    private int no;
    private String name;
    private int score;
    public Student(int _no, String _name, int _score)
    {
        no = _no;
        name = _name;
        score = _score;
    } 
    public int getNo()
    {
        return no;
    } 
    public String getName()
    {
        return name;
    } 
    public int getScore()
    {
        return score;
    } 
    public void print()
    {
        System.out.println(no + " "+name+" "+score);
    }
}
请构造main函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出
Input
三个学生的学号、姓名、成绩
Output
由高到低排列输出的三个学生信息
Sample Inpu
1 wang 89 
2 liu 78 
3 ma 90

Sample Output

3 ma 90 
1 wang 89 
2 liu 78

HINT

Pre Append Code

Post Append Code

class Student
{
    private int no;
    private String name;
    private int score;
    public Student(int _no, String _name, int _score)
    {
        no = _no;
        name = _name;
        score = _score;
    } 
    public int getNo()
    {
        return no;
    } 
    public String getName()
    {
        return name;
    } 
    public int getScore()
    {
        return score;
    } 
    public void print()
    {
        System.out.println(no + " "+name+" "+score);
    }
}

答案:

import java.util.*;

public class Main 
{
    public static void main(String[] args) 
    {
        Student []s=new Student[3];
        Scanner scan=new Scanner(System.in);
        for(int i=0;i<3;i++)
        {
        	int no=scan.nextInt();
        	String name=scan.next();
        	int score=scan.nextInt();
        	s[i]=new Student(no,name,score);
        }
        Student ss;
        for(int i=0;i<2;i++)
        	for(int j=i+1;j<3;j++)
        	{
        		if(s[i].getScore()<s[j].getScore())
        		{
        			ss=s[i];
        			s[i]=s[j];
        			s[j]=ss;
        		}
        	}
        for(int i=0;i<3;i++)
        	s[i].print();
    }
}

思路:

这个题用了数组的方法, 因为要输入的是三个同类型的对象,所以可以存到数组中,然后用排序的方式进行排序,下面是选择排序和冒泡排序的讲解。

https://blog.csdn.net/fighting123678/article/details/79573973

注意:

1、在进行String类型对象的输入的时候,别忘记用next()而不是用nextline(),区别在https://blog.csdn.net/fighting123678/article/details/83182622

中已经讲解。

2、在进行排序的时候,不需要为ss赋初值,可以是一个引用对象,不断改变其所指的对象即可。

3、在进行排序的时候,到底是s[i]还是s[j]要看好,不要写错,也就是一定要看好这两种方法。


3、学生、大学生、研究生类

Description

定义Student学生类,拥有学号、姓名、性别属性,提供构造函数,以及相应属性的get set函数,提供函数attendClass(String className)表示上课。
定义CollegeStudent大学生类继承自Student类,拥有新增属性专业,提供构造函数,提供新增属性的get和set函数
定义GraduateStudent研究生类继承自CollegeStudent类,拥有新增属性导师,提供构造函数,提供新增属性的get和set函数,提供函数doResearch() 表示做研究(打印xx is doing research)。

main函数中对构造的类进行测试

Input

学生类信息,学号、姓名、性别
大学生类信息,学号、姓名、性别、专业
研究生类信息,学号、姓名、性别、专业、导师

Output

学生类信息
大学生类信息
研究生类信息

Sample Input

1 liu female
2 chen female cs
3 li male sc wang

Sample Output

no: 1
name: liu
sex: female
no: 2
name: chen
sex: female
major: cs
no: 3
name: li
sex: male
major: sc
supervisor: wang
li is doing research

HINT

Pre Append Code

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int no = scan.nextInt();
        String name = scan.next();
        String sex = scan.next();
        Student s = new Student(no, name, sex);
        s.print();
        no = scan.nextInt();
        name = scan.next();
        sex = scan.next();
        String major = scan.next();
        CollegeStudent c = new CollegeStudent(no, name, sex, major);
        c.print();
        no = scan.nextInt();
        name = scan.next();
        sex = scan.next();
        major = scan.next();
        String supervisor = scan.next();
        GraduateStudent g = new GraduateStudent(no, name, sex, major, supervisor );
        g.print();
        g.doResearch();
        scan.close();
    }
}

Post Append Code

答案:

class Student
{
	private int no;
	private String name;
	private String sex;
	Student(int no,String name,String sex)
	{
		this.no=no;this.name=name;this.sex=sex;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public void print()
	{
		System.out.println("no: "+no);
		System.out.println("name: "+name);
		System.out.println("sex: "+sex);
	}
}

class CollegeStudent  extends Student
{
	String zhuan;
	CollegeStudent(int no,String name,String sex,String zhuan)
	{
		super(no,name,sex);
		this.zhuan=zhuan;
	}
	public String getZhuan() {
		return zhuan;
	}
	public void setZhuan(String zhuan) {
		this.zhuan = zhuan;
	}
	public void print()
	{
		super.print();
		System.out.println("major: "+zhuan);
	}
}
class GraduateStudent extends CollegeStudent
{
	String tutor;
	GraduateStudent(int no,String name,String sex,String zhuan,String tutor)
	{
		super(no,name,sex,zhuan);
		this.tutor=tutor;
	}
	public void print()
	{
		super.print();
		System.out.println("supervisor: "+tutor);
	}
	public void doResearch()
	{
		System.out.println(getName()+" is doing research");
	}
}

注意:

1、题目中给出的前代码和自己写的下面的代码可以写到一个.java程序中,但是一定要注意

  • 一个java文件中只能有一个public修饰的类,同时,java文件的名字,必须和这个public类的名字一样。
  • 每个类中只能有一个main方法,所以一个java文件中可以有多个main方法。
  • class和class之间不能是包含关系,也就是说,在定义下一个类的时候,需要在一个类外定义。
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int no = scan.nextInt();
		String name = scan.next();
		String sex = scan.next();
		Student s = new Student(no, name, sex);
		s.print();
		no = scan.nextInt();
		name = scan.next();
		sex = scan.next();
		String major = scan.next();
		CollegeStudent c = new CollegeStudent(no, name, sex, major);
		c.print();
		no = scan.nextInt();
		name = scan.next();
		sex = scan.next();
		major = scan.next();
		String supervisor = scan.next();
		GraduateStudent g = new GraduateStudent(no, name, sex, major, supervisor);
		g.print();
		g.doResearch();
		scan.close();
	}
}

class Student
{
	private int no;
	private String name;
	private String sex;
	Student(int no,String name,String sex)
	{
		this.no=no;this.name=name;this.sex=sex;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public void print()
	{
		System.out.println("no: "+no);
		System.out.println("name: "+name);
		System.out.println("sex: "+sex);
	}
}

class CollegeStudent  extends Student
{
	String zhuan;
	CollegeStudent(int no,String name,String sex,String zhuan)
	{
		super(no,name,sex);
		this.zhuan=zhuan;
	}
	public String getZhuan() {
		return zhuan;
	}
	public void setZhuan(String zhuan) {
		this.zhuan = zhuan;
	}
	public void print()
	{
		super.print();
		System.out.println("major: "+zhuan);
	}
}
class GraduateStudent extends CollegeStudent
{
	String tutor;
	GraduateStudent(int no,String name,String sex,String zhuan,String tutor)
	{
		super(no,name,sex,zhuan);
		this.tutor=tutor;
	}
	public void print()
	{
		super.print();
		System.out.println("supervisor: "+tutor);
	}
	public void doResearch()
	{
		System.out.println(getName()+" is doing research");
	}
}

这个是此题的完整代码。


4、员工的工资

Description

假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数):
(1)经理(Manager)——每月获得一份固定的工资
(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成
(3)一般工人(Worker)——则按他每月工作的天数计算工资
在Employee中提供方法getSalary(),用于计算每个雇员一个月的工资,并在子类中重写。

Post_AppendCode的main方法中已经构造Employee的三个变量,分别指向Manager、Salesman、Worker的对象,调用getSalary方法,输出三个对象的工资。
要求:编码实现经理、销售人员、一般工人三个类。

Input

经理的月工资 
销售人员的基本工资 销售人员的提成
工人的工作天数 工人每天的工资

Output

经理的工资
销售人员的工资
工人的工资

Sample Input

12000
3000 5000
22 200

Sample Output

12000
8000
4400

HINT

Pre Append Code

Post Append Code

public class Main
{
    public static void main(String[] args)
    {

        Scanner scan = new Scanner(System.in);
        int managerSalary = scan.nextInt();
        int salemanSalary = scan.nextInt();
        int salemanRaise = scan.nextInt();
        int workerEveryday = scan.nextInt();
        int workerDays = scan.nextInt();

        Employee e1 = new Manager(managerSalary);
        Employee e2 = new Salesman(salemanSalary, salemanRaise);
        Employee e3 = new Worker(workerEveryday, workerDays);

        System.out.println(e1.getSalary());
        System.out.println(e2.getSalary());
        System.out.println(e3.getSalary());

        scan.close();


    }
}

答案:

import java.util.Scanner;
abstract class Employee
{
    public abstract int getSalary();   
}

class Manager extends Employee
{    
    public int salary;
    Manager(int salary)
    {
        this.salary=salary;
    }
    public int  getSalary()
    {
        return salary;
    }
}

class Salesman extends Employee
{    
    public int salary;
    public int ticheng;
    Salesman(int salary,int ticheng)
    {
        this.salary=salary;
        this.ticheng=ticheng;
    }
    public int  getSalary()
    {
        return ticheng+salary;
    }
}

class Worker extends Employee
{    
    public int days;
    public int salary;
    Worker(int days,int salary)
    {
        this.days=days;
        this.salary=salary;
    }
    public int getSalary()
    {
        return days*salary;
    }
}

注意:

1、在提交的代码中,千万不要忘记写import java.util.Scanner;如果所给的代码中没有import的话,自己提交的代码中就一定要写上,第三题中就写了,所以提交的时候,不需要写,但是这个题中没有写,所以在提交的时候要自己写上并提交上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值