当前位置:文档之家› 《Java语言程序设计(基础篇)》(第10版 梁勇 著)第十一章练习题答案

《Java语言程序设计(基础篇)》(第10版 梁勇 著)第十一章练习题答案

《Java语言程序设计(基础篇)》(第10版梁勇著)第十一章练习题答案11.1public class Exercise11_01 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("Enter three sides: ");double side1 = input.nextDouble();double side2 = input.nextDouble();double side3 = input.nextDouble();Triangle triangle = new Triangle(side1, side2, side3);System.out.print("Enter the color: ");String color = input.nextLine();triangle.setColor(color);System.out.print("Enter a boolean value for filled: ");boolean filled = input.nextBoolean();triangle.setFilled(filled);System.out.println("The area is " + triangle.getArea());System.out.println("The perimeter is "+ triangle.getPerimeter());System.out.println(triangle);}}class Triangle extends GeometricObject {private double side1 = 1.0, side2 = 1.0, side3 = 1.0;/** Constructor */public Triangle() {}/** Constructor */public Triangle(double side1, double side2, double side3) {this.side1 = side1;this.side2 = side2;this.side3 = side3;}public double getSide1() {return side1;}public double getSide2() {return side2;}public double getSide3() {return side3;}@Override /** Override method findArea in GeometricObject */ public double getArea() {double s = (side1 + side2 + side3) / 2;return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); }@Override /** Override method findPerimeter in GeometricObject */ public double getPerimeter() {return side1 + side2 + side3;}@Overridepublic String toString() {// Implement it to return the three sidesreturn"Triangle: side1 = " + side1 + " side2 = " + side2 +" side3 = " + side3;}}11.2public class Exercise11_02 {public static void main(String[] args) {}}class Person {protected String name;protected String address;protected String phoneNumber;protected String email;@Overridepublic String toString() {return"Person";}}class Student1 extends Person {public static int FRESHMAN = 1;public static int SOPHOMORE = 2;public static int JUNIOR = 3;public static int SENIOR = 4;protected int status;@Overridepublic String toString() {return"Student";}}class Employee extends Person {protected String office;protected int salary;protected Calendar dateHired;@Overridepublic String toString() {return"Employee";}}class Faculty extends Employee {public static int LECTURER = 1;public static int ASSISTANT_PROFESSOR = 2; public static int ASSOCIATE_PROFESSOR = 3; public static int PROFESSOR = 4;protected String officeHours;protected int rank;@Overridepublic String toString() {return"Faculty";}}class Staff extends Employee {protected String title;@Overridepublic String toString() {return"Staff's title is " + title;}}11.3class Checkings extends Account {protected int overdraftLimit = 5000;@Overridepublic String toString() {return"Checkings";}}class Saving extends Account {protected int overdraftLimit = 5000;@Overridepublic String toString() {return"Saving";}}11.4import java.util.ArrayList;import java.util.Scanner;public class Exercise11_04 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();Scanner input = new Scanner(System.in);System.out.print("Enter integers (input ends with 0): ");int value;do {value = input.nextInt(); // Read a value from the inputif (value != 0)list.add(value); // Add the value if it is not in the list } while (value != 0);// Display the maximum numberSystem.out.print("The maximum number is " + max(list));}public static Integer max(ArrayList<Integer> list) {if (list == null || list.size() == 0)return null;int result = list.get(0);for (int i = 1; i < list.size(); i++)if (result < list.get(i))result = list.get(i);return result;}}11.5import java.util.*;public class Exercise11_05 {public static void main(String[] args) {Course course1 = new Course("Data Structures");Course course2 = new Course("Database Systems");course1.addStudent("Peter Jones");course1.addStudent("Brian Smith");course1.addStudent("Anne Kennedy");course2.addStudent("Peter Jones");course2.addStudent("Steve Smith");System.out.println("Number of students in course1: "+ course1.getNumberOfStudents());String[] students = course1.getStudents();for (int i = 0; i < course1.getNumberOfStudents(); i++)System.out.print(students[i] + ", ");System.out.println();System.out.print("Number of students in course2: "+ course2.getNumberOfStudents());}}class Course {private String name;private java.util.ArrayList<String> students = new java.util.ArrayList<>();public Course(String name) { = name;}public void addStudent(String student) {students.add(student);}public String[] getStudents() {// String[] temp = new String[students.size()];// for (int i = 0; i < temp.length; i++)// temp[i] = (String) students.get(i);//// return temp;// Or better to useString[] result = new String[students.size()];students.toArray(result);return result;}public int getNumberOfStudents() {return students.size();}}11.6import java.util.*;public class Exercise11_06 {public static void main(String[] args) {ArrayList list = new ArrayList();list.add(new Loan());list.add(new Date());for (int i = 0; i < list.size(); i++)System.out.println(list.get(i));}}11.7import java.util.ArrayList;public class Exercise11_07 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < 10; i++) {list.add(i);}shuffle(list);for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");}}public static void shuffle(ArrayList<Integer> list) { for (int i = 0; i < list.size(); i++) {int index = (int)(Math.random() * 10);int temp = list.get(index);list.set(index, list.get(i));list.set(i, temp);}}}11.8public class Exercise11_08 {public static void main (String[] args) {Account1.setAnnualInterestRate(5.5);Account1 account = new Account1("George", 1122, 1000);account.deposit(30);account.deposit(40);account.deposit(50);account.withdraw(5);account.withdraw(4);account.withdraw(2);System.out.println("Name: " + account.getName());System.out.println("Annual interest rate: " +Account1.getAnnualInterestRate());System.out.println("Balance: " + account.getBalance());java.util.ArrayList list = account.getTransactions();System.out.printf("%-35s%-15s%-15s%-15s\n", "Date", "Type", "Amount", "Balance");for (int i = 0; i < list.size(); i++) {Transaction transaction = (Transaction)(list.get(i));System.out.printf("%-35s%-15s%-15s%-15s\n", transaction.getDate(), transaction.getType(), transaction.getAmount(),transaction.getBalance());}}}class Account1 {private int id;private String name;private double balance;private static double annualInterestRate;private java.util.Date dateCreated;private java.util.ArrayList transactions = new java.util.ArrayList();public Account1() {dateCreated = new java.util.Date();}public Account1(String name, int id, double balance) {this.id = id; = name;this.balance = balance;dateCreated = new java.util.Date();}public int getId() {return this.id;}public double getBalance() {return balance;}public java.util.ArrayList getTransactions() {return transactions;}public String getName() {return name;}public static double getAnnualInterestRate() {return annualInterestRate;}public void setId(int id) {this.id =id;}public void setBalance(double balance) {this.balance = balance;}public static void setAnnualInterestRate(double annualInterestRate) { Account1.annualInterestRate = annualInterestRate;}public double getMonthlyInterest() {return balance * (annualInterestRate / 1200);}public java.util.Date getDateCreated() {return dateCreated;}public void withdraw(double amount) {balance -= amount;transactions.add(new Transaction('W', amount, balance, "")); }public void deposit(double amount) {balance += amount;transactions.add(new Transaction('D', amount, balance, "")); }}class Transaction {private java.util.Date date;private char type;private double amount;private double balance;private String description;public Transaction(char type, double amount, double balance, String description) {date = new java.util.Date();this.type = type;this.amount = amount;this.balance = balance;this.description = description;}public java.util.Date getDate() {return date;}public char getType() {return type;}public double getAmount() {return amount;}public double getBalance() {return balance;}public String getDescription() {return description;}}11.9import java.util.ArrayList;import java.util.Scanner;public class Exercise11_09 {public static void main(String[] args) {System.out.print("Enter the array size n: ");Scanner input = new Scanner(System.in);int n = input.nextInt();System.out.println("Enter the array row by row:");int[][] matrix = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {matrix[i][j] = (int)(Math.random() * 2);System.out.print(matrix[i][j]);}System.out.println();}// Check rowsint rowSum = sumRow(matrix[0]);ArrayList<Integer> list = new ArrayList<Integer>(); list.add(0);for (int i = 1; i < n; i++) {if (rowSum < sumRow(matrix[i])) {rowSum = sumRow(matrix[i]);list.clear();list.add(i);}else if (rowSum == sumRow(matrix[i])) {list.add(i);}}System.out.print("The largest row index: ");for (int i = 0; i < list.size() - 1; i++)System.out.print(list.get(i) + ", ");System.out.print(list.get(list.size() - 1));// Check columnsint columnSum = sumColumn(matrix, 0);list.clear();list.add(0);for (int i = 1; i < n; i++) {if (columnSum < sumColumn(matrix, i)) {columnSum = sumColumn(matrix, i);list.clear();list.add(i);}else if (columnSum == sumColumn(matrix, i)) {list.add(i);}}System.out.print("\nThe largest column index: ");for (int i = 0; i < list.size() - 1; i++)System.out.print(list.get(i) + ", ");System.out.print(list.get(list.size() - 1));}public static int sumRow(int row[]) {int sum = 0;for (int i = 0; i < row.length; i++)sum += row[i];return sum;}public static int sumColumn(int matrix[][], int column) { int sum = 0;for (int i = 0; i < matrix.length; i++)sum += matrix[i][column];return sum;}}11.10import java.util.Scanner;public class Exercise11_10 {public static void main(String[] args) {Scanner input = new Scanner(System.in);MyStack stack = new MyStack();for (int i = 0; i < 5; i++)stack.push(input.nextLine());System.out.println(stack.getSize() + " strings are: ");while (!stack.isEmpty())System.out.println(stack.pop());}}// MyStack.java: Implementing a stack using inheritance class MyStack extends java.util.ArrayList<Object> {public boolean isEmpty() {return super.isEmpty();}public int getSize() {return size();}public Object peek() {return get(getSize() - 1);}public Object pop() {return remove(getSize() - 1);}public Object push(Object o) {add(o);return o;}public int search(Object o) {return indexOf(o);}public String toString() {return"stack: " + toString();}11.11import java.util.ArrayList;import java.util.Scanner;public class Exercise11_11 {public static void main(String[] args) {Scanner input = new Scanner(System.in);ArrayList<Integer> list = new ArrayList<Integer>();System.out.print("Enter five integers: ");for (int i = 0; i < 5; i++)list.add(input.nextInt());sort(list);for (int i = 0; i < list.size(); i++)System.out.print(list.get(i) + " ");}public static void sort(ArrayList<Integer> list) {for (int i = 0; i < list.size() - 1; i++) {// Find the minimum in the list[i..list.length-1]int currentMin = list.get(i);int currentMinIndex = i;for (int j = i + 1; j < list.size(); j++) {if (currentMin > list.get(j)) {currentMin = list.get(j);currentMinIndex = j;}}// Swap list.get(i) with list.get(currentMinIndex) if necessary;if (currentMinIndex != i) {list.set(currentMinIndex, list.get(i));list.set(i, currentMin);}}}}import java.util.ArrayList;import java.util.Scanner;public class Exercise11_12 {public static void main(String[] args) {Scanner input = new Scanner(System.in);ArrayList<Double> list = new ArrayList<Double>(); System.out.print("Enter five double values: ");for (int i = 0; i < 5; i++)list.add(input.nextDouble());System.out.println("The sum is " + sum(list));}public static double sum(ArrayList<Double> list) { double sum = 0;for (int i = 0; i < list.size(); i++)sum += list.get(i);return sum;}}11.13import java.util.Scanner;import java.util.ArrayList;public class Exercise11_13 {public static void main(String[] args) {System.out.print("Enter ten integers: ");ArrayList<Integer> list = new ArrayList<>();Scanner input = new Scanner(System.in);for (int i = 0; i < 10; i++) {list.add(input.nextInt());}removeDuplicate(list);for (int i = 0; i < list.size(); i++)System.out.print(list.get(i) + " ");}public static void removeDuplicate(ArrayList<Integer> list) { ArrayList<Integer> temp = new ArrayList<Integer>();for (int i = 0; i < list.size(); i++)if (!temp.contains(list.get(i)))temp.add(list.get(i));list.clear();for (int i = 0; i < temp.size(); i++)list.add(temp.get(i));}}11.14import java.util.Scanner;import java.util.ArrayList;public class Exercise11_14 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("Enter five integers for list1: ");ArrayList<Integer> list1 = new ArrayList<>();for (int i = 0; i < 5; i++)list1.add(input.nextInt());System.out.print("Enter five integers for list2: ");ArrayList<Integer> list2 = new ArrayList<>();for (int i = 0; i < 5; i++)list2.add(input.nextInt());ArrayList<Integer> list3 = add(list1, list2);System.out.print("The combined list is ");for (int i = 0; i < list3.size(); i++)System.out.print(list3.get(i) + " ");}public static ArrayList<Integer> add(ArrayList<Integer> list1, ArrayList<Integer> list2) {ArrayList<Integer> result = new ArrayList<>();for (int i = 0; i < list1.size(); i++)result.add(list1.get(i));for (int i = 0; i < list2.size(); i++)result.add(list2.get(i));return result;}}11.15import java.util.Scanner;import java.util.ArrayList;public class Exercise11_15 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("Enter the number of points: ");int n = input.nextInt();System.out.print("Enter the coordinates of the points: ");ArrayList<Double> x = new ArrayList<>();ArrayList<Double> y = new ArrayList<>();for (int i = 0; i < n; i++) {x.add(input.nextDouble());y.add(input.nextDouble());}double total = 0;for (int i = 1; i < n - 1; i++)total += getArea(x.get(0), y.get(0), x.get(i), y.get(i), x.get(i + 1), y.get(i + 1));System.out.print("The total area is " + total);}public static double getArea(double x1, double y1, double x2, double y2, double x3, double y3) {double s1 = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 -y2));double s2 = Math.sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 -y3));double s3 = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 -y2));double s = (s1 + s2 + s3) / 2;return Math.sqrt(s * (s - s1) * (s - s2) * (s - s3));}}11.16import java.util.Scanner;import java.util.ArrayList;public class Exercise11_16 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();int number1 = (int) (Math.random() * 10);int number2 = (int) (Math.random() * 10);// Create a ScannerScanner input = new Scanner(System.in);System.out.print("What is " + number1 + " + " + number2 + "? ");int answer = input.nextInt();list.add(answer);while (number1 + number2 != answer) {System.out.print("Wrong. Try again. What is "+ number1 + " + "+ number2 + "? "); answer = input.nextInt();if (list.contains(answer)) {System.out.println("You already entered " + answer);}else {list.add(answer);}}System.out.println("You got it!");}}11.17import java.util.ArrayList;import java.util.Scanner;public class Exercise11_17 {public static void main(String[] args) {System.out.print("Enter an integer m: ");Scanner input = new Scanner(System.in);int m = input.nextInt();ArrayList<Integer> list = new ArrayList<Integer>();int number = m;int factor = 2;while (factor <= number) {if (number % factor == 0) {list.add(factor);number = number / factor;}elsefactor++;}int n = 1;int i = 0;while (i < list.size() - 1) {if (list.get(i) != list.get(i + 1)) {n *= list.get(i);i += 1;}elsei += 2;}if (i == list.size() - 1)n *= list.get(i);System.out.println("The smallest number n for m * n to be a perfect square is " + n);System.out.println("m * n is " + m * n);}}。

相关主题