JAVA语言程序设计课后习题----第四单元解析(仅供参考)

1  本题水题,主要理解题目的意思即可,访问方法和修改方法可以通过快捷方式alt+insert选中你需要的成员变量即可

 1 public class Person {
 2     public String name;
 3     public int age;
 4     public static void main(String[] args) {
 5 //        new一个对象,对象名是person
 6         Person person =new Person();
 7 //        给name变量赋值
 8         person.setName("zzy");
 9 //        给age变量赋值
10         person.setAge(21);
11 //        对象的引用
12         person.speak();
13     }
14 
15     public String getName() {
16         return name;
17     }
18 
19     public void setName(String name) {
20         this.name = name;
21     }
22 
23     public int getAge() {
24         return age;
25     }
26 
27     public void setAge(int age) {
28         this.age = age;
29     }
30 
31   public void speak() {
32       System.out.println(getName());
33       System.out.println(getAge());
34   }
35 }

2  本题水题,跟着题目的意思写出需求即可,注意的是在无参的构造函数调用有参的构造函数的方法,本题的centerX与centerY没有用到

 1 public class Circle {
 2     public double centerX,centerY,radius;
 3     public static void main(String[] args) {
 4         System.out.println("调用带参数的构造函数圆的各种数据:");
 5         Circle circle=new Circle(1.0);
 6         System.out.println("圆的半径:"+circle.getRadius());
 7         System.out.println("圆的面积:"+circle.getRrea());
 8         System.out.println("圆的周长:"+circle.getPerimeter());
 9         System.out.println("调用不带参数的构造函数圆的各种数据:");
10         Circle circle1=new Circle();
11         System.out.println("圆的半径:"+circle1.getRadius());
12         System.out.println("圆的面积:"+circle1.getRrea());
13         System.out.println("圆的周长:"+circle1.getPerimeter());
14 
15 
16     }
17 //访问
18     public double getRadius() {
19         return radius;
20     }
21 
22     public void setRadius(double radius) {
23         this.radius = radius;
24     }
25     public double getRrea(){
26         return (Math.PI*radius*radius);
27     }
28     public double getPerimeter(){
29         return 2*Math.PI;
30     }
31 
32     public Circle(double radius) {
33         this.radius = radius;
34     }
35     public Circle() {
36 //      注意在无参的构造函数中调用有参的构造函数要用this
37 //        具体在书本71详解
38         this(1.0);
39     }
40 }

3  本题水题,注意在无参的构造函数调用有参的构造函数的方法

 1 public class Rectangle {
 2     public double length,width;
 3 
 4     public static void main(String[] args) {
 5         Rectangle rectangle =new Rectangle(1.0,1.0);
 6         System.out.println("定义带参数的构造函数矩形:");
 7         System.out.println("长方形的长为:"+rectangle.getLength());
 8         System.out.println("长方形的宽为:"+rectangle.getWidth());
 9         System.out.println("长方形的面积为:"+rectangle.getArea());
10         System.out.println("长方形的周长为:"+rectangle.getPerimeter());
11         System.out.println("定义不带参数的构造函数矩形");
12         Rectangle rectangle1 =new Rectangle();
13 
14         System.out.println("长方形的长为:"+rectangle1.getLength());
15         System.out.println("长方形的宽为:"+rectangle1.getWidth());
16         System.out.println("长方形的面积为:"+rectangle1.getArea());
17         System.out.println("长方形的周长为:"+rectangle1.getPerimeter());
18 
19     }
20 //          有参的构造方法
21     public Rectangle(double length, double width) {
22         this.length = length;
23         this.width = width;
24     }
25 //    无参的构造方法
26 public Rectangle(){
27         this(1.0,1.0);
28 }
29 
30     public double getLength() {
31         return length;
32     }
33 
34     public void setLength(double length) {
35         this.length = length;
36     }
37 
38     public double getWidth() {
39         return width;
40     }
41 
42     public void setWidth(double width) {
43         this.width = width;
44     }
45 //    矩形的周长
46     public double getPerimeter(){
47         return 2*(length+width);
48     }
49 //    矩形的面积
50     public double getArea(){
51         return length*width;
52     }
53 }

4  本题水题,主要是加深对构造方法的使用

 1 public class Triangle {
 2     public double a,b,c,s;
 3 
 4     public static void main(String[] args) {
 5         Triangle triangle = new Triangle(3,4,5);
 6         System.out.println("调用带三个参数的构造函数:");
 7         System.out.println("三角形的面积为:"+triangle.area());
 8         System.out.println("调用默认构造函数:");
 9         Triangle triangle1 =new Triangle();
10         System.out.println("三角形的面积为:"+triangle1.area());
11 
12     }
13 //    有参的构造方法
14     public Triangle(double a, double b, double c) {
15         this.a = a;
16         this.b = b;
17         this.c = c;
18         s=(a+b+c)/2;
19     }
20 //    无参的构造方法
21     public Triangle() {
22         this.a = 0.0;
23         this.b = 0.0;
24         this.c = 0.0;
25         s=(a+b+c)/2;
26     }
27 //    三角形的面积
28     public double area(){
29         return Math.sqrt(s*(s-a)*(s-b)*(s-c));
30     }
31 }

5  本题主要是加深对访问方法与修改方法的使用

 1 public class Stock {
 2     public String symbol,name;
 3     public double perviousPrice,currentPrice;
 4 
 5     public static void main(String[] args) {
 6         Stock stock =new Stock("600000","浦发银行");
 7         stock.setPerviousPrice(25.5);
 8         stock.setCurrentPrice(28.6);
 9         System.out.print("代号为:"+stock.symbol+"的"+stock.name);
10         System.out.print("当前的市值变化百分比为:"+String.format("%.1f",stock.getChangPercent()));
11 
12     }
13 //    返回从当前一日价格到当前价格变换的百分比
14     public double getChangPercent(){
15         return getCurrentPrice()-getPerviousPrice();
16     }
17 //     有参的构造方法
18     public Stock(String symbol, String name) {
19         this.symbol = symbol;
20         this.name = name;
21     }
22 //      返回储存股票的前一日收盘价
23     public double getPerviousPrice() {
24         return perviousPrice;
25     }
26 //      设置储存股票的前一日收盘价
27     public void setPerviousPrice(double perviousPrice) {
28         this.perviousPrice = perviousPrice;
29     }
30 //      返回存储股票的当前价格
31     public double getCurrentPrice() {
32         return currentPrice;
33     }
34 //      设置存储股票的当前价格
35     public void setCurrentPrice(double currentPrice) {
36         this.currentPrice = currentPrice;
37     }
38 }

6  Fibonacci数就是第一项第二项都是1从第三项开始是前两项之和,可以通过调用方法来实现,里面用if else语句

 1 public class Fibonacci {
 2 //    调用方法
 3     public static long fib(int n){
 4 //        如果n==1或者2就返回1
 5         if(n==1||n==2)
 6             return 1;
 7         else
 8             return fib(n-2)+fib(n-1);
 9     }
10     public static void main(String[] args) {
11         for (int i = 1; i <= 20; i++) {
12             System.out.print(fib(i)+" ");
13 //            每10项进行一次换行
14             if (i % 10 ==0)
15                 System.out.println();
16         }
17 
18     }
19 }

7  本题主要考的是方程的判别式问题 与方程的根求解问题,记住这些基本公式问题就不大

 1 public class QuadraticEquation {
 2    private double a,b,c;
 3     public static void main(String[] args) {
 4         QuadraticEquation quadraticEquation =new QuadraticEquation(1,3,1);
 5         if (quadraticEquation.getDiscriminant()<0)
 6             System.out.println("方程无根");
 7         if (quadraticEquation.getDiscriminant()==0)
 8             System.out.println(quadraticEquation.getRoot1());
 9         if (quadraticEquation.getDiscriminant()>0)
10             System.out.println("x1="+quadraticEquation.getRoot1()+" "+"x2="+quadraticEquation.getRoot2());
11 
12     }
13 //      带有参数的构造方法
14     public QuadraticEquation(double a, double b, double c) {
15         this.a = a;
16         this.b = b;
17         this.c = c;
18     }
19 
20     public double getA() {
21         return a;
22     }
23 
24     public double getB() {
25         return b;
26     }
27 
28     public double getC() {
29         return c;
30     }
31 //    判别式
32     public double getDiscriminant(){
33         return b*b-4*a*c;
34     }
35 //    方程一个根
36     public double getRoot1(){
37         return (-b+Math.sqrt(Math.pow(b,2)-4*a*c))/2*a;
38     }
39 //    方程第二个根
40     public double getRoot2(){
41         return (-b-+Math.sqrt(Math.pow(b,2)-4*a*c))/2*a;
42     }
43 }

8  本题就是对成员变量的基本运用注意题目意思即可

 1 public class TV {
 2     private int channel,volumeLevel;
 3     private boolean on;
 4 
 5     public static void main(String[] args) {
 6     }
 7 //    无参构造函数
 8     public TV(){
 9     }
10 //    电视开
11     public void turnOn(){
12         on = true;
13     }
14 //    电视关
15     public void turnOff(){
16         on = false;
17     }
18 //      设置频道
19     public void setChannel(int channel) {
20         this.channel = channel;
21     }
22 //      设置音量
23     public void setVolumeLevel(int volumeLevel) {
24         this.volumeLevel = volumeLevel;
25     }
26 //    频道+开关
27     public void channelUp(){
28         channel++;
29     }
30 //    频道-开关
31     public void channelDown(){
32         channel--;
33     }
34 //    声音+开关
35     public void volumeUp(){
36         volumeLevel++;
37     }
38 //    声音-开关
39     public void volumeDown(){
40         volumeLevel--;
41     }
42 }

9  本题主要是对基本概念的理解,比如偶数、奇数的判断

  1 public class MyInteger {
  2     private int value;
  3 
  4     public static void main(String[] args) {
  5 
  6         MyInteger myInteger =new MyInteger(10);
  7         System.out.println("value:");
  8         System.out.println("偶数:"+myInteger.isEven());
  9         System.out.println("奇数:"+myInteger.isOdd());
 10         System.out.println("素数:"+myInteger.isPrime());
 11         System.out.println("返回参数15:");
 12         System.out.println("偶数:"+myInteger.isEven(15));
 13         System.out.println("奇数:"+myInteger.isOdd(15));
 14         System.out.println("素数:"+myInteger.isPrime(15));
 15        // char []a={'a','b','c'};
 16      // myInteger.parseInt(a);
 17         char A[]={'1','2','3'};
 18         //myInteger.parseInt(A);
 19         System.out.println(myInteger.parseInt(A));
 20         String s = "123";
 21         System.out.println(myInteger.parseInt(s));
 22     }
 23 
 24     public MyInteger(int value) {
 25         this.value = value;
 26     }
 27 
 28     public int getValue() {
 29         return value;
 30     }
 31 //    判断value是否为偶数
 32     public boolean isEven(){
 33         return value%2==0;
 34     }
 35 //    判断value是否为奇数
 36     public boolean isOdd(){
 37         return value%2!=0;
 38     }
 39 //    判断返回参数整数是否为素数
 40     public boolean isPrime(){
 41         int i;
 42         for(i=2;i<value;i++) {
 43             if (value % i == 0)
 44                 break;
 45         }
 46             if (value==i)
 47                 return true;
 48             return false;
 49     }
 50 //    判断返回参数整数是否为偶数
 51     public boolean isEven(int number){
 52         return number%2==0;
 53 
 54     }
 55 //    判断返回参数整数是否为奇数
 56     public boolean isOdd(int number){
 57         return number%2!=0;
 58 
 59     }
 60 //    判断返回参数整数是否为素数
 61     public boolean isPrime(int number){
 62         int i;
 63         for(i=2;i<number;i++) {
 64             if (number % i == 0)
 65                 break;
 66         }
 67         if (number==i)
 68             return true;
 69         return false;
 70 
 71     }
 72 //    判断返回参数整数对象是否为偶数
 73     public boolean isEven(MyInteger myInteger){
 74         return myInteger.value % 2 ==0;
 75 
 76     }
 77 //    判断返回参数整数对象是否为奇数
 78     public boolean isOdd(MyInteger myInteger){
 79         return myInteger.value % 2 != 0;
 80     }
 81 //    判断返回参数整数对象是否为素数
 82     public boolean isPrime(MyInteger myInteger){
 83 
 84         int i;
 85         for(i=2;i<myInteger.value;i++) {
 86             if (myInteger.value % i == 0)
 87                 break;
 88         }
 89         if (myInteger.value==i)
 90             return true;
 91         return false;
 92     }
 93 //    比较当前对象整数与参数整数
 94     public boolean equals(int b){
 95         return b==value;
 96 
 97     }
 98 //    比较当前对象整数与参数整数对象
 99     public boolean equals(MyInteger myInteger){
100         return myInteger.value==value;
101 
102     }
103 //    将参数字符数组转换为整数
104     public int parseInt(char []a){
105         String s=new String(a);
106         return parseInt(s);
107     }
108 //    将参数字符串转换成整数
109     public int parseInt(String s){
110         return Integer.valueOf(s);
111     }
112 
113 }

10  本题主要考的是回文数与素数,我们首先判断这个数是否为素数,在这个基础上再判断是否为回文数,素数就是只能被1和本身整除的数,回文数就是一个数第一位与最后一位相等,第二位与倒数第二位相等,比如11、101

 1 public class HuiSu {
 2     public int i,j,k,count=0;
 3 
 4     public static void main(String[] args) {
 5         HuiSu huiSu =new HuiSu();
 6         huiSu.print();
 7     }
 8     public void print(){
 9         for ( j = 2; j < 1000 ; j++) {
10             for ( k = 2; k <1000 ; k++) {
11                 if (j%k==0)
12                     break;
13             }
14 //            判断是是否是素数
15             if (j == k)
16             {
17 //                判断是否为回文数
18                 if (j / 10 == 0)
19                 {
20                     count++;
21                     System.out.print(j+" ");
22                     if (count % 10==0)
23                         System.out.println();
24                 }
25               if (j / 10==j%10)
26                 {
27                     count++;
28                     System.out.print(j+" ");
29                     if (count % 10==0)
30                         System.out.println();
31                 }
32                  if(j / 100==j % 10)
33                 {
34                     count++;
35                     System.out.print(j+" ");
36                     if (count % 10 == 0 && count != 20)
37                         System.out.println();
38                 }
39             }
40         }
41     }
42 }

 

10  本题虽然是最后一题,但是仍然是水题,就是对成员变量的运用

 1 import java.time.LocalDate;
 2 
 3 public class Account {
 4     private int id;
 5     private double balance,annulRate;
 6     private LocalDate dateCreated;
 7 
 8     public static void main(String[] args) {
 9         Account account = new Account(123,0.0);
10         System.out.println("尊敬的:"+account.id+"用户"+"恭喜你开通账户");
11         System.out.println("你的账户余额为:"+account.balance);
12         //创建账户的时间
13         account.getDateCreated();
14         //存款
15         account.deposit(500);
16         //取款
17         account.withdraw(10);
18         System.out.println("你要办理的业务:");
19         account.setAnnulRate(3.6);
20         account.getMonthlyInterestRate();
21 
22     }
23 //  有参构造函数
24     public Account(int id, double balance) {
25         this.id = id;
26         this.balance = balance;
27     }
28 //    无参构造函数
29     public Account() {
30     }
31 
32     public int getId() {
33         return id;
34     }
35 //  返回账户余额
36     public double getBalance() {
37         return balance;
38     }
39 //  返回存款的年利率
40 public double getAnnulRate() {
41         return annulRate;
42     }
43 //获取当前日期
44     public LocalDate getDateCreated() {
45        // LocalDate  dateCreated= LocalDate.now();
46         LocalDate today = LocalDate.now();
47        today.getYear();
48         System.out.println("您账户创建的日期为:"+LocalDate.now());
49        // System.out.println(today.getYear()+"/"+today.getMonthValue()+"/"+today.getDayOfMonth()+"/");
50         return dateCreated;
51     }
52 //    返回月利率的方法
53 public double getMonthlyInterestRate(){
54     System.out.println("您存款的月利率为:"+annulRate/12);
55         return annulRate/12;
56 
57 }
58 //取款方法
59 public void withdraw(double amount){
60         balance -= amount;
61     System.out.println("取款金额为:"+amount);
62     System.out.println("当前余额为:"+balance);
63 
64 }
65 //  存款方法
66 public void deposit(double amount){
67         balance += amount;
68     System.out.println("存款金额为:"+amount);
69     System.out.println("当前余额为:"+balance);
70 }
71 //  设置账户ID
72     public void setId(int id) {
73         this.id = id;
74     }
75 //  设置账户的余额
76     public void setBalance(double balance) {
77         this.balance = balance;
78     }
79 //      修改存款的年利率
80     public void setAnnulRate(double annulRate) {
81         System.out.println("您的存款年利率为:"+annulRate);
82         this.annulRate = annulRate;
83     }
84 }

 

posted @ 2019-05-15 09:08  不愿当个小萌新  阅读(468)  评论(0编辑  收藏  举报