編程練習題
(11.2~11.4節)+(11.5~11.14節)
11.1(三角形Triangle)
父類(左邊) 和 子類(右邊)繼承關係,
如下圖:
package p11;
public class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
public GeometricObject() {
dateCreated=new java.util.Date();
}
public GeometricObject(String color, boolean filled) {
dateCreated=new java.util.Date();
this.color=color;
this.filled=filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color=color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled=filled;
}
public java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "created on " + dateCreated + "\ncolor: " + color+
" and filled: " + filled;
}
}
package p11;
public class Triangle extends GeometricObject {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public Triangle() {
}
//這是一個 重載 的構造方法
public Triangle(double side1, double side2,
double side3, String color, boolean filled) {
super(color,filled);//或者 調用父類中已有方法 ,如下
//setColor(color);
//setFilled(filled);
this.side1=side1;
this.side2=side2;
this.side3=side3;
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
public double getArea() {
double s=(side1+side2+side3)/2;
double area=Math.pow( s*(s-side1)*(s-side2)*(s-side3) , 0.5);
return area;
}
public double getPerimeter() {
return side1+side2+side3;
}
@Override
public String toString() {
return super.toString() + "\nArea is " + getArea();
}
}
package p11;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("請輸入三角形的三條邊:");
double s1=input.nextInt();
double s2=input.nextInt();
double s3=input.nextInt();
System.out.print("請輸入三角形的顏色: ");
String c1=input.next();
System.out.print("請輸入一個boolean值(false:不填充;true:填充):");
boolean f1=input.nextBoolean();
input.close();
//創建對象
GeometricObject object=new Triangle(s1, s2, s3, c1, f1);
System.out.println(object.toString());
}
}
(11.5~11.14節)
11.2(Person、Student、Employee、Faculty 和 Staff類)
這個不難,我也就是在 受聘日期 那裏“卡殼”了一下
總體的繼承關係:
package p11;
public class Person {
private String name;
private String adress;
private String phone;
private String email;
public Person(String name, String adress, String phone, String email) {
this.name=name;
this.adress=adress;
this.phone=phone;
this.email=email;
}
public Person(String name) {
this.name=name;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress=adress;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone=phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email=email;
}
public String toString() {
return "The Person's name is "+name+"\nAdress is "+adress+
"\nPhone is "+phone+"\nEmail is "+email;
}
}
package p11;
public class Student extends Person {
private int classState;
public final static int FRESHMAN=1;//大一新生
public final static int SOPHOMORE=2;//大二學生
public final static int JUNIOR=3;//大三學生
public final static int SENIOR=4;//大四學生
public Student(int classState, String name, String adress, String phone, String email) {
super(name, adress, phone, email);
this.classState=classState;
}
public int getClassState() {
return classState;
}
public void setClassState(int classState) {
this.classState=classState;
}
@Override
public String toString() {
return "The Student's classState is "+classState+"\n"+super.toString();
}
}
package p11;
import java.util.Date;
import p10.MyDate;
public class Employee extends Person {
private String office;
private double salary;
private MyDate DateOfAppointment;//受聘日期
//構造方法
public Employee(String office, double salary, MyDate DateOfAppointment,
String name, String adress, String phone, String email) {
super(name, adress, phone, email);
this.DateOfAppointment=DateOfAppointment;
this.salary=salary;
this.office=office;
}
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office=office;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary=salary;
}
public String getDateOfAppointment() {
return DateOfAppointment.getYear()+"年"+DateOfAppointment.getMonth()
+"月"+DateOfAppointment.getDay()+"日";
}
@Override
public String toString() {
return "The Employee's dateOfAppointment is "+ getDateOfAppointment()
+"\nOffice is "+office+"\nSalary is "+salary+"\n"+super.toString();
}
}
package p11;
import p10.MyDate;
public class Faculty extends Employee {
private long officeHours;
private String rank;
//構造方法
public Faculty(long officeHours, String rank, String office, double salary, MyDate DateOfAppointment,
String name, String adress, String phone, String email) {
super(office, salary, DateOfAppointment, name, adress, phone, email);
this.officeHours=officeHours;
this.rank=rank;
}
public long getOfficeHours() {
return officeHours;
}
public void setOfficeHours(long officeHours) {
this.officeHours=officeHours;
}
public String getRank() {
return rank;
}
public void setRank(String rank) {
this.rank=rank;
}
@Override
public String toString() {
return "The Faculty's officeHours is "+officeHours+"\nRank is "+rank+
"\n"+super.toString();
}
}
package p11;
import p10.MyDate;
public class Staff extends Employee {
private String title;
//構造方法
public Staff(String title, String office, double salary, MyDate DateOfAppointment, String name,
String adress, String phone, String email) {
super(office, salary, DateOfAppointment, name, adress, phone, email);
this.title=title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title=title;
}
@Override
public String toString() {
return "The Staff's title is "+title+"\n"+super.toString();
}
}
package p11;
import p10.MyDate;
public class Test2 {
public static void main(String[] args) {
Person person=new Person("王大狗","垃圾堆","123456789","[email protected]");
Person student=new Student(4,"王大狗","垃圾堆","123456789","[email protected]");
Person employee=new Employee("五星街辦公室一號",5600,new MyDate(1996,12,17),"王大狗","垃圾堆","123456789","[email protected]");
Person faculty=new Faculty(8, "二等", "五星街辦公室一號",5600,new MyDate(1996,12,17),"王大狗","垃圾堆","123456789","[email protected]");
Person staff=new Staff("優秀員工","五星街辦公室一號",5600,new MyDate(1996,12,17),"王大狗","垃圾堆","123456789","[email protected]");
System.out.println(person.toString());
System.out.println();
System.out.println(student.toString());
System.out.println();
System.out.println(employee.toString());
System.out.println();
System.out.println(faculty.toString());
System.out.println();
System.out.println(staff.toString());
}
}
11.3(賬戶類Account的子類)
1.我先解釋一下下:
透支限定額:也就是可以讓你在卡沒有錢的情況下還 可以借你最大的資金限額 ,透支額度是銀行根據你提交的個人資料、財力證明等材料來綜合評定的,一般是3000到5w不等。普卡最高在1w左右,金卡最高可以到5w甚至更高。
package p9;
import java.util.Date;
public class Account {
public int id=0;//用戶名
public double balance=0;//餘額
public double annualInteresRate=0;//當前利率
public java.util.Date dateCreated;//存儲開戶日期
//無參構造方法
public Account(){
Date dateCreated=new Date();
this.dateCreated=dateCreated;
}
//有參構造方法
public Account(int id, double balance){
Date dateCreated=new Date();
this.dateCreated=dateCreated;
this.id=id;
this.balance=balance;
}
public int getId(){
return id;
}
public double getBalance() {
return balance;
}
public double getAnualInterestRate() {
return annualInteresRate;
}
public void setId(int id){
this.id=id;
}
public void setBalance(double balance) {
this.balance=balance;
}
//設置 年利率
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInteresRate=annualInterestRate;
}
//獲得開戶日期
public String getDateCreated(){
return dateCreated.toString();
}
//月利息
public double getMonthlyInterestRate() {
return annualInteresRate/12;
}
//取錢
public double withDraw(double withdraw) {
return this.balance=this.balance-withdraw;
}
//存錢
public double deposit(double deposit) {
return this.balance=this.balance+deposit;
}
}
package p11;
import p9.Account;
public class CheckingAccount extends Account{
private double OverDraftLimit;//限定透支額度
public CheckingAccount(int id, double balance, double OverdraftLimit) {
super(id, balance);
this.OverDraftLimit=OverDraftLimit;//可用額度
}
//
public double getOverDraftLimit() {
return OverDraftLimit;
}
public void setOverDraftLimit(double OverDraftLimit) {
this.OverDraftLimit=OverDraftLimit;
}
@Override
//取錢
public double withDraw(double withdraw) {
//可用額度不爲0時
if(getOverDraftLimit() != 0) {
//自動提款機,小於100元不提取
if(this.balance<100) {
//移用,“可用額度”
this.balance = this.balance + this.OverDraftLimit;
//移用,“可用額度”後,系統自動將可用額度 “清零”,以後的可用額度就爲 "0"
setOverDraftLimit(0);
return this.balance=this.balance-withdraw;
}
else {
//正常卡里有錢並且>100元時,不用 “可用額度”
return this.balance=this.balance-withdraw;
}
}
//當可用額度爲0時
else if(getOverDraftLimit() == 0){
if(this.balance<100) {
return -1;//返回一個負數,表示不可取錢了!!!
}
else {
//正常卡里有錢並且>100元時,不用 “可用額度”
return this.balance=this.balance-withdraw;
}
}
return this.balance;
}
public String toString() {
return "The ID:"+id+"\nThe balance is "
+balance+"\n可用額度爲:"+getOverDraftLimit();
}
}
package p11;
import p9.Account;
public class SavingAccount extends Account{
public SavingAccount(int id, double balance) {
super(id,balance);
}
@Override //取錢方法 不可透支
public double withDraw(double withdraw) {
//自動提款機 <100 元是不能夠取出來的,我這裏用-1表示
if(this.balance<100) {
return -1;
}
else {
return this.balance=this.balance-withdraw;
}
}
public String toString() {
return "The ID:"+id+"\nThe balance is "
+balance;
}
}
11.4(ArrayList 的最大元素)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("請輸入一個以0結尾的數值序列:");
//創建一個數組列表:該ArrayList對象可以用於存儲 Integer整型數值
ArrayList<Integer> list=new ArrayList<>();
int value=input.nextInt();
while(value != 0) {
list.add(value);
value=input.nextInt();
}
input.close();
//調用max方法,來返回輸入的最大值
System.out.println("最大值是:"+max(list));
}
//一個返回數組列表中最大值的方法
public static Integer max(ArrayList<Integer> list) {
if(list.isEmpty() || list.size()==0) {
return null;
}
else {
int max=list.get(0);
int maxIndex=0;
for(int i=1; i<list.size(); i++) {
if(max<list.get(i)) {
max=list.get(i);
maxIndex=i;
}
}
return max;
}
}
}
11.5(課程類 Course)
package p11;
import java.util.ArrayList;
public class Course {
private String courseName;
//用數組列表存儲學生名
private ArrayList<String> students = new ArrayList<>();
private int numberOfStudents;
//課程的一個構造方法
public Course(String courseName) {
this.courseName = courseName;
}
//返回課程名
public String getCourseName() {
return courseName;
}
//增加學生名字
public void addStudent(String student) {
students.add(student);
}
//刪除學生名字
public void dropStudent(String student) {
students.remove(student);
}
//返回 學生名字列表
public ArrayList<String> getStudents() {
return students;
}
//返回 學生人數
public int getNumberOfStudents() {
return numberOfStudents=students.size();
}
}
package p11;
public class Test5 {
public static void main(String[] args) {
Course object1=new Course("Date Structures");
Course object2=new Course("Date Systems");
object1.addStudent("Peter Jones");
object1.addStudent("Kim Smith");
object1.addStudent("Anne Kennedy");
object2.addStudent("Peter Jones");
object2.addStudent("Steve Smith");
System.out.println("Number of students in course1: "
+ object1.getNumberOfStudents());
//輸出 數組列表
System.out.println(object1.getStudents());
System.out.println("Number of students in course2: "
+object2.getNumberOfStudents());
}
}
11.6(使用 ArrayList)
說明一下:我沒有創建Loan類、Circle類,而是直接用我自己之前包裏有的類來創建對象,其實用哪個類都是一樣的。
package p11;
import java.util.ArrayList;
import java.util.Date;
public class Test6 {
public static void main(String[] args) {
ArrayList<Object> list=new ArrayList<>();
Person object1=new Person("陳霄潔", "縣府9棟701號", "18867076391", "[email protected]");
Date object2=new Date();
Triangle object3=new Triangle();
list.add(object1);
list.add(object2);
list.add("Welcome to Java !");
list.add(object3);
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
System.out.println();
}
}
}
11.7(打亂ArrayList)
package p11;
import java.util.ArrayList;
import java.util.Arrays;
public class Test7 {
public static void main(String[] args) {
Integer[] array= {3, 5, 95, 4, 15, 34, 3, 6, 5};
ArrayList<Integer> list=new ArrayList<>(Arrays.asList(array));
shuffle(list);
}
public static void shuffle(ArrayList<Integer> list) {
java.util.Collections.shuffle(list);
System.out.println(list);
}
}
**11.8(新的 Account 類)
package p11;
import java.util.ArrayList;
public class Test8 {
public static void main(String[] args) {
//用於爲賬戶存儲交易
//ArrayList<Object> transactions=new ArrayList<>();
NewAccount object=new NewAccount("George", 1122, 1000);
object.setAnnualInterestRate(0.015);
object.deposit(30);
object.deposit(40);
object.deposit(50);
object.withDraw(5);
object.withDraw(4);
object.withDraw(2);
System.out.println("賬戶持有者名字: "+object.getName()
+ "\n利率: "+object.getAnnualInterestRate()
+ "\n收支額: "+object.getBalance()
+ "\n所有的交易:"+object.toString());
}
}
package p11;
import java.util.ArrayList;
import java.util.Date;
public class NewAccount {
private String name;
//用於爲賬戶存儲交易
private ArrayList<Object> transactions=new ArrayList<>();
public int id=0;//用戶名
public double balance=0;//餘額
public double annualInteresRate=0;//當前利率
public java.util.Date dateCreated;//存儲開戶日期
//無參構造方法
public NewAccount() {
Date dateCreated=new Date();
this.dateCreated=dateCreated;
}
//有參構造方法
public NewAccount(int id, double balance){
Date dateCreated=new Date();
this.dateCreated=dateCreated;
this.id=id;
this.balance=balance;
}
//一個新的有參構造方法
public NewAccount(String name, int id, double balance) {
Date dateCreated=new Date();
this.dateCreated=dateCreated;
this.id=id;
this.balance=balance;
this.name=name;
}
public void setId(int id) {
this.id=id;
}
public void setBalance(double balance) {
this.balance=balance;
}
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInteresRate=annualInterestRate;
}
public int getId() {
return id;
}
public double getBalance() {
return balance;
}
public String getName() {
return name;
}
public double getAnnualInterestRate() {
return annualInteresRate;
}
public double getMonthlyInterestRate() {
return annualInteresRate/12;
}
public String getDateCreated() {
return dateCreated.toString();
}
//取錢
public double withDraw(double withDarw) {
//創建一筆取錢交易
Transaction withDrawTransacte=new Transaction('W', withDarw, (this.balance=this.balance-withDarw), "取款:"+withDarw+"美元");
transactions.add(withDrawTransacte.getDescription());
return this.balance;
}
//存錢
public double deposit(double deposit) {
//創建一筆存錢交易
Transaction depositTransacte=new Transaction('D', deposit, (this.balance=this.balance+deposit), "存款:"+deposit+"美元");
transactions.add(depositTransacte.getDescription());
return this.balance;
}
public String toString() {
return "\n日期: "+getDateCreated()+"\n"+transactions.toString();
}
}
package p11;
import java.util.Date;
public class Transaction {
//交易日期
private java.util.Date date;
//交易類型,例如'W','D'
private char type;
//交易量
private double amount;
//交易後的新餘額
private double balance;
//交易描述
private String description;
//一個有參構造方法
public Transaction(char type, double amount, double balance, String description) {
this.type=type;
this.amount=amount;
this.balance=balance;
this.description=description;
//創建一個交易日期
date=new Date();
this.date=date;
}
//獲得交易日期
public String getDate() {
return date.toString();
}
//設置交易日期
public void setDate(long eclapseTime) {
date.setTime(eclapseTime);
}
//交易類型:‘W’——取款,‘D’——存款
public char getType() {
return type;
}
public void setType(char type) {
this.type=type;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount=amount;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance=balance;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description=description;
}
}
*11.9(最大的行和列)
注意:本人感覺我這代碼還不夠完善,比如,測試完會有這種[【0,0,0,1,2,3】的下標出現,其實代表的也就是【0,1,2】。
以下的沒有出現重複的下標,是偶然的隨機數產生的結果:
當然也會出現這種樣子的運行結果:
【0,0,0,0,0,2】其實代表的是【0,2】.
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test9 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter the array size n: ");
int n=input.nextInt();
input.close();
System.out.println("The random array is : ");
//創建一個二維數組
int[][] array=new int[n][n];
//下標[row]:行
//下標[column]:列
//按行,循環賦值,並且輸出
for(int row=0; row<array.length; row++) {
for(int column=0; column<array[row].length; column++) {
array[row][column]=(int) (Math.random()*2);
System.out.print(" "+array[row][column] + " ");
}
//換行
System.out.println();
}
//---------------------------------------------------------------------------------------
//先通過比較,知道哪一行的和最大
//用數組列表來存儲——最大值下標
ArrayList<Integer> list1=new ArrayList<>();
int maxRow1=0;//"行最大值"——(一行的元素相加得到的最大值)
int maxIndex1=0;//"行最大值的下標 "——(若某一行具有最大值,則將其下標賦值給maxIndex)
//先計算第一行的和,並且先讓它的和爲最大值,它的下標爲最大值下標。
//然後拿這個最大值 與 剩下的行的各自的和相比較,找出真正的最大值和最大值下標
for(int column=0; column<array[0].length; column++) {
maxRow1 += array[0][column];
list1.add(maxIndex1);//先把 0下標暫時加入數組列表
}
//一一比較找出真正的最大值和最大值下標
for(int row=0; row<array.length; row++) {
int total=0;
for(int column=0; column<array[row].length; column++) {
total += array[row][column];
}
if(maxRow1<total) {
list1.clear();
maxRow1=total;
maxIndex1=row;
list1.add(maxIndex1);
}
else if(maxRow1==total) {
list1.add(row);
}
}
System.out.println("行最大值爲: "+maxRow1+"\n行最大值下標是: "+list1.toString());
//--------------------------------------------------------------------------------------
//先通過比較,知道哪一列的和最大
ArrayList<Integer> list2=new ArrayList<>();
int maxColumn=0;
int MaxIndex=0;
for(int row=0; row<array.length; row++) {
maxColumn += array[row][0];
list2.add(MaxIndex);
}
for(int column=1; column<array[1].length; column++) {
int all=0;
for(int row=0; row<array.length; row++) {
all += array[row][column];
}
if(maxColumn<all) {
list2.clear();
maxColumn=all;
MaxIndex=column;
list2.add(MaxIndex);
}
else if(maxColumn==all) {
list2.add(column);
}
}
System.out.println("列最大值爲: "+maxColumn+"\n列最大值下標是: "+list2.toString());
}
}
11.10(利用繼承實現MyStack)
package p11;
import java.util.ArrayList;
public class MyStack extends ArrayList{
private ArrayList<Object> list=new ArrayList<>();
public boolean isEmpty() {
return list.isEmpty();
}
public int getSize() {
return list.size();
}
public Object peek() {
return list.get(getSize()-1);
}
public Object pop() {
Object o=list.get(getSize()-1);
list.remove(getSize()-1);
return o;
}
public void push(Object o) {
list.add(o);
}
@Override
public String toString() {
return "stack: " + list.toString();
}
}
package p11;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("請輸入5個字符串: ");
String s1=input.nextLine();
String s2=input.nextLine();
String s3=input.nextLine();
String s4=input.nextLine();
String s5=input.nextLine();
input.close();
//創建一個棧類
MyStack stack=new MyStack();
//入棧
stack.push(s1);
stack.push(s2);
stack.push(s3);
stack.push(s4);
stack.push(s5);
//輸出:可以直接用toString()——不過這是給你看一個入棧效果,它是順序的
System.out.println(stack.toString());
//換行
System.out.println();
//逆序輸出:可以用出棧 pop():先進後出
int leng=stack.getSize();
for(int i=0; i<leng; i++) {
System.out.print(" " + stack.pop());
}
//換行
System.out.println();
System.out.println();
//元素出棧後再看一下,棧裏面現在的情況
System.out.println(stack.toString());
}
}
11.11(對ArrayList排序)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("請輸入5個數字: ");
int number1=input.nextInt();
int number2=input.nextInt();
int number3=input.nextInt();
int number4=input.nextInt();
int number5=input.nextInt();
input.close();
ArrayList<Integer> list=new ArrayList<>();
list.add(number1);
list.add(number2);
list.add(number3);
list.add(number4);
list.add(number5);
sort(list);
System.out.println(list);
}
//對一個數值的ArrayList進行升序排序(從小到大排序)
public static void sort(ArrayList<Integer> list) {
java.util.Collections.sort(list);
}
}
11.12(對ArrayList求和)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("請輸入5個數字: ");
double number1=input.nextDouble();
double number2=input.nextDouble();
double number3=input.nextDouble();
double number4=input.nextDouble();
double number5=input.nextDouble();
input.close();
ArrayList<Double> list=new ArrayList<>();
list.add(number1);
list.add(number2);
list.add(number3);
list.add(number4);
list.add(number5);
System.out.println("它們的和爲: " + sum(list));
}
public static double sum(ArrayList<Double> list) {
double sum=0;
int leng=list.size();
for(int i=0; i<leng; i++) {
sum += list.get(i);
}
return sum;
}
}
*11.13(去掉重複元素)
有兩種輸出方式給你隨意選擇
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test13 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//創建一個數組 list
ArrayList<Integer> list=new ArrayList<>();
System.out.print("Enter ten integers: ");
int n1=input.nextInt();
int n2=input.nextInt();
int n3=input.nextInt();
int n4=input.nextInt();
int n5=input.nextInt();
int n6=input.nextInt();
int n7=input.nextInt();
int n8=input.nextInt();
int n9=input.nextInt();
int n10=input.nextInt();
input.close();
list.add(n1);
list.add(n2);
list.add(n3);
list.add(n4);
list.add(n5);
list.add(n6);
list.add(n7);
list.add(n8);
list.add(n9);
list.add(n10);
//去除重複的數字
removeDuplicate(list);
}
public static void removeDuplicate(ArrayList<Integer> list) {
ArrayList<Integer> newList=new ArrayList<>();
for(int i=0; i<list.size(); i++) {
//如果"新數組"——newList裏沒有 "舊數組"——list裏的元素值
//則把這個元素加入"新數組"——newList到裏
if( !newList.contains(list.get(i)) ) {
newList.add(list.get(i));
}
}
//輸出方式一:
System.out.print("The distinct integers are : "+newList.toString());
//換兩次行,給你們看得清楚點
System.out.println();
System.out.println();
//輸出方式二:
System.out.print("The distinct integers are: ");
for(int i=0; i<newList.size(); i++) {
System.out.print(" " + newList.get(i));
}
}
}
11.14(結合兩個列表)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test14 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter five integers for list1: ");
int t1;
ArrayList<Integer> list1=new ArrayList<>();
for(int i=0; i<5; i++) {
t1=input.nextInt();
list1.add(t1);
}
System.out.print("Enter five integers for list2: ");
int t2;
ArrayList<Integer> list2=new ArrayList<>();
for(int i=0; i<5; i++) {
t2=input.nextInt();
list2.add(t2);
}
union(list1,list2);
}
public static void union(ArrayList<Integer> list1, ArrayList<Integer> list2) {
//將list2加在list1後面
list1.addAll(list2);
System.out.print("The combined list is ");
for(int i=0; i<list1.size(); i++) {
System.out.print(list1.get(i) + " ");
}
}
}
*11.15(凸多邊形面積)
//這題不太懂面積怎麼求,你們可以去百度看看別的大神咋弄得
我有帶更新。。。。
我先做下一題,(#^.^#)嘻嘻~
**11.16(加法測試)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test16 {
public static void main(String[] args) {
int number1=(int) (Math.random()*10);
int number2=(int) (Math.random()*10);
//創建一個數組,用來存放錯誤成績
ArrayList<Integer> list=new ArrayList<>();
Scanner input=new Scanner(System.in);
System.out.print("What is "+number1+" + "+number2+"?");
int answer=input.nextInt();
while(number1+number2!=answer) {
if( !list.contains(answer) ) {
list.add(answer);
}
else {
System.out.println("You already entered "+answer);
}
System.out.print("Wrong answer.Try again.What is "
+ number1+" + "+number2+"? ");
answer=input.nextInt();
}
System.out.println("You got it!");
}
}
**11.17(代數:完全平方)
這一題其實不難,分爲兩大步驟走:(兩大要點,基本掌握,你自己都會編程了)
一、知道怎樣從一個整數中分離出它的因子(在第五單元的練習題(5.16題)中做過)
二、知道怎樣統計一個列表中出現重複元素的個數(其實這個和消除重複的過程有點相似)
package p11;
import java.util.ArrayList;
import java.util.Scanner;
public class Test17 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//創建一個數組列表來保存“因子”
ArrayList<Integer> list=new ArrayList<>();
System.out.print("Enter an integer m: ");
//-------------------------------------------------------------
//源代碼在我之前做過的練習裏出現過。
//第五單元 編程練習題 5.16(找出一個整數的因子)題中
int number=input.nextInt();
input.close();
//得到 M
int m=number;
int i=2;
System.out.print("因子爲: ");
while(number != 1) {
if(number % i ==0) {
number = number / i ;
System.out.print( i + " ");//輸出因子
list.add(i);
}
else {
i++;
}
}
System.out.println();
System.out.println("檢查 list數組裏的情況: "+list.toString());
//--------------------------------------------------------------------
ArrayList<Integer> newList=new ArrayList<>();
int[] countArray=new int[1000];
for(int j=0; j<list.size(); j++) {
if(!newList.contains(list.get(j))) {
newList.add(list.get(j));
countArray[list.get(j)]++;
}
else {
countArray[list.get(j)]++;
}
}
System.out.println("檢查 newList數組裏的情況: "+newList.toString());
System.out.println();
//先定義 N 爲 1
int n=1;
for(int j=0; j<newList.size(); j++) {
//不能將2整除的是奇數
if(countArray[newList.get(j)] % 2 != 0 ) {
n = n*newList.get(j) ;
}
}
//輸出 N :是列表中出現奇數次的因子的乘積
System.out.println("The smallest number m*n to "
+ "be a perfect square is " + n);
System.out.println(" m*n is " + m*n);
}
}