題目1:
有兩隻老虎,一隻體重為180kg,一隻體重為200kg,請用程式實作判斷兩隻老虎的體重是否相同。
代碼如下:
public class OperatorTest {
public static void main (String[] args) {
int w1 = 180;
int w2 = 200;
boolean ans = w1 == w2?true:false;
System.out.println("ans = "+ans);
}
}
題目2:
有3個人,分别為a,b,c,其中a身高為150cm,b身高為210cm,c身高為165cm,請用程式實作擷取這3人中的最高身高。
代碼如下:
public class OperatorTest {
public static void main (String[] args) {
int h1 = 150;
int h2 = 210;
int h3 = 165;
int tmp = (h1 > h2)?h1:h2;
int ans = (tmp > h3)?tmp:h3;
System.out.println(ans);
}
}
題目3:
任意給出一個整數,請用程式判斷該數是奇數還是偶數,并在控制台輸出該整數是奇數還是偶數。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數:");
int number = sc.nextInt();
if (number%2==0)
System.out.println(number + "是偶數");
else System.out.println(number + "是奇數");
}
}
測試結果:
題目4:
小明馬上要期末考試,根據小明不同的成績,用程式實作小明該得到怎麼樣的禮物,并用控制台輸出。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個分數:");
int score = sc.nextInt();
if (score > 100 || score < 0) System.out.println("你輸入的分數有誤");
else if (score >= 95 && score <= 100) System.out.println("自行車一輛");
else if (score >= 90 && score <= 94) System.out.println("遊樂場玩一次");
else if (score >= 80 && score <= 89) System.out.println("變形金剛玩具一個");
else System.out.println("打一頓就好了");
}
//資料測試:正确資料,邊界資料,錯誤資料
}
題目5:
一年有12個月,請輸入一個月份,輸出該月屬于哪個季節。
代碼如下:
寫法一:
import java.awt.desktop.SystemEventListener;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
public class OperatorTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個月份:");
int month = sc.nextInt();
/*春:3,4,5
夏:6,7,8
秋:9,10,11
冬:1,2,12
*/
switch (month){
case 1:
System.out.println("冬季");
break;
case 2:
System.out.println("冬季");
break;
case 3:
System.out.println("春季");
break;
case 4:
System.out.println("春季");
break;
case 5:
System.out.println("春季");
break;
case 6:
System.out.println("夏季");
break;
case 7:
System.out.println("夏季");
break;
case 8:
System.out.println("夏季");
break;
case 9:
System.out.println("秋季");
break;
case 10:
System.out.print("秋季");
break;
case 11:
System.out.println("秋季");
break;
case 12:
System.out.println("冬季");
break;
default:
System.out.println("輸入有誤");
break;
}
}
}
寫法二:
import java.awt.desktop.SystemEventListener;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
public class OperatorTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個月份:");
int month = sc.nextInt();
/*春:3,4,5
夏:6,7,8
秋:9,10,11
冬:1,2,12
*/
switch (month){
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("輸入有誤");
}
}
}
題目6:
輸出1-5和5-1的資料。
代碼如下:
import java.util.Scanner;
public class OperatorTest{
public static void main(String[] args){
for (int i = 1;i<=5;i++) System.out.println(i);
System.out.println("--------------------");
for (int i = 5;i>=1;i--) System.out.println(i);
}
}
題目7:
求和:
求1-5之間的和,并輸出。
代碼如下:
import java.util.Scanner;
public class OperatorTest{
public static void main(String[] args){
int sum = 0;
for (int i = 1;i<=5;i++) sum+=i;
System.out.println(sum);
}
}
題目8:
求偶數和。
代碼如下:
import java.util.Scanner;
public class OperatorTest{
public static void main(String[] args){
int sum = 0;
for (int i =1;i<=100;i++)
{
if (i % 2==0) sum+=i;
}
System.out.println(sum);
}
}
題目9:
輸出所有的水仙花數。
水仙花數是3位數,水仙花數的個位,十位,百位的數字立方和等于原數。
代碼如下:
import java.util.Scanner;
public class OperatorTest{
public static void main(String[] args){
for (int i = 100;i<1000;i++)
{
int a = i%10;
int b = i/10%10;
int c = i/100;
if ((a*a*a+b*b*b+c*c*c)==i) System.out.println(i);
}
}
}
題目10:
統計水仙花數有多少個?
代碼如下:
import java.util.Scanner;
public class OperatorTest{
public static void main(String[] args){
int cnt = 0;
for (int i = 100;i<1000;i++)
{
int a = i%10;
int b = i/10%10;
int c = i/100;
if ((a*a*a+b*b*b+c*c*c)==i) cnt++;
}
System.out.println(cnt);
}
}
題目11:
世界最高峰(8843.43米 = 8844430毫米),假如我有一張足夠大的紙,它的厚度為0.1毫米,請問,折疊多少次可以達到這個山峰的高度。
代碼如下:
import java.awt.*;
public class OperatorTest
{
public static void main(String[] args)
{
double paper = 0.1;
int zf = 8844430;
int cnt = 0;
while(paper <= zf)
{
paper *=2;
cnt++;
}
System.out.println(cnt);
}
}
題目12:
程式自動生成1-100之間的數字,使用程式實作猜出這個數字是多少?
代碼如下:
import java.io.OutputStream;
import java.util.Random;
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Random r = new Random();
int number = r.nextInt(100)+1;
while(true)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要猜的數字:");
int guessNumber = sc.nextInt();
if (guessNumber > number) System.out.println("你猜的數字"+guessNumber+"大了");
else if (guessNumber < number) System.out.println("你猜的數字"+guessNumber+"小了");
else {
System.out.println("恭喜你猜對了");
break;
}
}
}
}
題目13:
設計一個方法用于列印兩個數中的較大值。
代碼如下:
public class OperatorTest
{
public static void main(String[] args)
{
int a = 13;
int b = 7;
GetMax(a,b);
}
public static void GetMax(int a,int b)
{
if (a > b) System.out.println(a);
else System.out.println(b);
}
}
題目14:
使用方法重載的思想,設計比較兩個整數是否相同的方法,相容全整數類型(byte,short,int,long)。
代碼如下:
public class OperatorTest
{
public static boolean Compare(byte a,byte b)
{
return a==b;
}
public static boolean Compare(int a,int b)
{
return a==b;
}
public static boolean Compare(short a,short b)
{
return a==b;
}
public static boolean Compare(long a,long b)
{
return a==b;
}
public static void main(String[] args)
{
int a = 20;
int b = 30;
boolean ans = Compare(a,b);
System.out.println(ans);
}
}
題目15:
設計一個方法用于數組周遊,要求周遊的結果是在同一行上的,例如:[11,22,33,44,55]。
代碼如下:
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr ={11,22,33,44,55};
printArray(arr);
}
public static void printArray(int[] arr)
{
System.out.print("[");
for (int i = 0;i<arr.length;i++)
{
if (i== arr.length-1)
System.out.print(arr[i]);
else System.out.print(arr[i]+",");
}
System.out.print("]");
}
}
題目16:
設計一個方法用于擷取數組中的最大值,調用方法并輸出結果。
代碼如下:
import java.awt.desktop.SystemEventListener;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr ={11,22,33,44,55};
int maxElem = getMax(arr);
System.out.println(maxElem);
}
public static int getMax(int [] arr)
{
int maxElem = arr[0];
for (int i =1;i<arr.length;i++)
{
if (maxElem < arr[i]) maxElem = arr[i];
}
return maxElem;
}
}
題目17:
有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數為多少?
代碼如下:
import java.awt.desktop.SystemEventListener;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr = new int [20];
arr[0] =1;
arr[1] = 1;
for (int i = 2;i<arr.length;i++)
{
arr[i] = arr[i-1]+arr[i-2];
}
System.out.println(arr[19]);
}
}
題目18:
設計一個方法,用于比較兩個數組的内容是否相同。
代碼如下:
import java.awt.desktop.SystemEventListener;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr1 = {11,22,33,44,55};
int [] arr2 = {11,22,33,44,55};
boolean ans = compareArray(arr1,arr2);
System.out.println(ans);
}
public static boolean compareArray(int [] arr1,int [] arr2)
{
if (arr1.length!=arr2.length) return false;
for (int i = 0;i<arr1.length;i++)
{
if (arr1[i]!=arr2[i]) return false;
}
return true;
}
}
題目19:
已知一個數組arr = {19,28,37,46,50};鍵盤錄入一個資料,查找該資料在數組中的索引,并在控制台輸出找到的索引值。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr = {11,22,33,44,55,66,80};
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int ans = findElem(arr,number);
System.out.println(ans);
}
public static int findElem(int [] arr,int f)
{
for (int i = 0;i<arr.length;i++)
{
if (f==arr[i]) return i;
}
return -1;
}
}
題目20:
已知一個數組arr = {19,28,37,46,50};把它們反轉變成{50,46,37,28,19};
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr = {19,28,37,46,50};
reverseArray(arr);
System.out.print("[");
for (int i = 0;i<arr.length;i++)
{
if (i== arr.length-1)
System.out.print(arr[i]);
else System.out.print(arr[i]+",");
}
System.out.print("]");
}
public static void reverseArray(int [] arr)
{
for (int start = 0,end = arr.length-1;start <= end;start++,end--)
{
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
}
}
題目21:
首先定義一個學生類,然後定義一個學生測試類,在學生測試類中通過對對象完成成員變量和成員方法的使用。
代碼如下:
package test01;
public class Student {
String name;
int age;
public void study()
{
System.out.println("好好學習,天天向上");
}
public void doHomework()
{
System.out.println("鍵盤敲爛,月薪過萬");
}
}
package test01;
public class StudentDemo {
public static void main(String[] args)
{
Student s = new Student();
System.out.println(s.name+","+s.age);
s.name ="Tom";
s.age = 30;
System.out.println(s.name+","+s.age);
s.study();
s.doHomework();
}
}
題目22:
使用Scanner類,實作從鍵盤錄入一個字元串,最後輸出在控制台。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字元串資料:");
String line = sc.nextLine();//快捷鍵: Ctrl + Alt + V
System.out.println("你輸入的資料是"+line);
}
}
題目23:
使用者登入
已知使用者名和密碼,請用程式實作模拟使用者登入,總共給三次機會,登入之後,給出相應的提示。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
String userName = "Tom";
String passWord = "abcdef";
for(int i =0;i<3;i++) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入使用者名:");
String name = sc.nextLine();
System.out.println("請輸入密碼:");
String pwd = sc.nextLine();
if (name.equals(userName) && pwd.equals(passWord)) {
System.out.println("登陸成功");
break;
}
else if (2-i==0) System.out.println("你無了!!!");
else System.out.println("登陸失敗,你還有"+(2-i)+"次機會");
}
}
}
題目24:
鍵盤錄入一個字元串,使用程式實作在控制台周遊該字元串。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字元串:");
String line = sc.nextLine();
for (int i = 0;i<line.length();i++)
{
System.out.println(line.charAt(i));
}
}
}
題目25:
鍵盤錄入一個字元串,統計該字元串中大寫字母字元,小寫字母字元,數字字元出現的次數(不考慮其他字元)。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字元串:");
String line = sc.nextLine();
int bigCnt = 0;
int smallCnt = 0;
int numberCnt = 0;
for (int i = 0;i<line.length();i++)
{
char ch = line.charAt(i);
if (ch >= 'A' && ch <= 'Z') bigCnt++;
else if (ch >= 'a' && ch <= 'z') smallCnt++;
else if (ch >= '0' && ch <= '9') numberCnt++;
}
System.out.println("大寫字母:"+bigCnt);
System.out.println("小寫字母:"+smallCnt);
System.out.println("數字:"+numberCnt);
}
}
題目26:
定義一個方法,把int數組中的資料按照指定的格式拼接成一個字元串傳回,調用該方法,并在控制台輸出結果。例如,數組為int[] arr = {1,2,3};,執行方法後的輸出結果為:[1,2,3]
代碼如下:
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr = {1,2,3};
String s = arrayToString(arr);
System.out.println(s);
}
public static String arrayToString(int [] arr)
{
String s = "";
s+="[";
for (int i = 0;i<arr.length;i++)
{
if (i==arr.length-1) s+=arr[i];
else {
s+=arr[i];
s+=",";
}
}
s+="]";
return s;
}
}
題目27:
定義一個方法,實作字元串反轉,鍵盤錄入一個字元串,調用該方法後,在控制台輸出結果。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字元串:");
String line = sc.nextLine();
String ans = reverse(line);
System.out.println(ans);
}
public static String reverse(String s)
{
String ss = "";
for (int i = s.length()-1;i>=0;i--)
{
ss+=s.charAt(i);
}
return ss;
}
}
題目28:
(用StringBuilder)
定義一個方法,把int數組中的資料按照指定的格式拼接成一個字元串傳回,調用該方法,并在控制台輸出結果。例如,數組為int[]arr = {1,2,3};,執行方法後的輸出結果為:[1,2,3]。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
int [] arr = {1,2,3};
String s = arrayToString(arr);
System.out.println(s);
}
public static String arrayToString(int [] arr)
{
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i = 0;i<arr.length;i++)
{
if (i==arr.length-1) sb.append(arr[i]);
else sb.append(arr[i]).append(",");
}
sb.append("]");
String s = sb.toString();
return s;
}
}
題目29:
(用StringBuilder)
定義一個方法,實作字元串反轉。鍵盤錄入一個字元串,調用該方法後,在控制台輸出結果。例如,鍵盤錄入abc,輸出結果cba。
代碼如下:
import java.util.Scanner;
public class OperatorTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字元串");
String line = sc.nextLine();
String s = myReverse(line);
System.out.println(s);
}
public static String myReverse(String s)
{
// StringBuilder sb = new StringBuilder(s);
//
// sb.reverse();
//
// String ss = sb.toString();
// return ss;
return new StringBuilder(s).reverse().toString();
}
}
題目30:
建立一個存儲字元串的集合,存儲3個字元串元素,使用程式實作在控制台周遊該集合。
代碼如下:
import java.util.ArrayList;
public class OperatorTest
{
public static void main(String[] args)
{
ArrayList<String> array = new ArrayList<>();
array.add("Tom");
array.add("Jack");
array.add("Lily");
for (int i = 0;i<array.size();i++)
{
String s = array.get(i);
System.out.println(s);
}
}
}
題目31:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合。
代碼如下:
package test03;
public class Student {
private String name;
private int age;
public Student(){}
public Student(String name ,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public String getName()
{
return name;
}
}
package test03;
import java.util.ArrayList;
public class ArrayStudent {
public static void main(String[] args)
{
ArrayList<Student> array = new ArrayList<>();
Student s1 = new Student("Tom",30);
Student s2 = new Student("Jack",18);
Student s3 = new Student("Lily",21);
array.add(s1);
array.add(s2);
array.add(s3);
for (int i =0;i<array.size();i++)
{
Student s = array.get(i);
System.out.println(s.getName()+"," + s.getAge());
}
}
}
題目32:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合,學生的姓名和年齡來自于鍵盤錄入。
代碼如下:
package test03;
public class Student {
private String name;
private String age;
public Student(){}
public Student(String name ,String age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(String age)
{
this.age = age;
}
public String getAge()
{
return age;
}
public String getName()
{
return name;
}
}
package test03;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayStudent {
public static void main(String[] args)
{
ArrayList<Student> array = new ArrayList<>();
addStudent(array);
addStudent(array);
addStudent(array);
for (int i = 0;i<array.size();i++)
{
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
public static void addStudent(ArrayList<Student> array)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學生姓名:");
String name = sc.nextLine();
System.out.println("請輸入學生年齡:");
String age = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
array.add(s);
}
}
題目33:
定義老師類和學生類,然後寫代碼調試;最後找到老師類和學生類當中的共性内容,抽取出一個父類,用繼承的方法改寫代碼,并進行測試。
代碼如下:
package test05;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
package test05;
public class Teacher extends Person{
public Teacher(){}
public Teacher(String name,int age)
{
super(name,age);
}
public void teach()
{
System.out.println("教書育人!!!");
}
}
package test05;
public class Student extends Person{
public void study()
{
System.out.println("好好學習!!!");
}
}
package test05;
import java.io.OutputStream;
public class PersonDemo {
public static void main(String[] args)
{
Teacher t1 = new Teacher();
t1.setName("Tom");
t1.setAge(30);
System.out.println(t1.getName() + "," + t1.getAge());
t1.teach();
Teacher t2 = new Teacher("Jack",22);
System.out.println(t2.getName() + "," + t2.getAge());
t2.teach();
}
}
題目34:
請采用繼承的思想實作貓和狗的案列,并在測試類中進行測試。
代碼如下:
package test06;
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
package test06;
public class Cat extends Animal {
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
public void catchMouse()
{
System.out.println("貓抓老鼠");
}
}
package test06;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
public void lookDoor()
{
System.out.println("狗看門");
}
}
package test06;
import java.io.OutputStream;
public class AnimalDemo {
public static void main(String [] args)
{
Cat c1 = new Cat();
c1.setName("加菲貓");
c1.setAge(5);
System.out.println(c1.getName()+","+c1.getAge());
c1.catchMouse();
Cat c2 = new Cat("加菲貓",5);
System.out.println(c2.getName()+","+c2.getAge());
c2.catchMouse();
}
}
題目35:
請采用多态的思想實作貓和狗的案列,并在測試類中進行測試。
代碼如下:
package test07;
public class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
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 void eat()
{
System.out.println("動物吃東西");
}
}
package test07;
public class Cat extends Animal{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("貓吃魚");
}
}
package test07;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃骨頭");
}
}
package test07;
public class AnimalTest {
public static void main(String [] args)
{
Animal a = new Cat();
a.setAge(5);
a.setName("加菲");
System.out.println(a.getName()+","+a.getAge());
a.eat();
a = new Cat("加菲",5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
}
}
題目36:
請采用抽象類的思想實作貓和狗的案列,并在測試類中進行測試。
代碼如下:
package test08;
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
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 abstract void eat();
}
package test08;
public class Cat extends Animal{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("貓吃魚");
}
}
package test08;
public class Dog extends Animal{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗吃骨頭");
}
}
package test08;
public class AnimalDemo {
public static void main(String[] args)
{
Animal a = new Cat();
a.setName("加菲");
a.setAge(5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
a = new Cat("加菲",5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
}
}
題目37:
對貓和狗進行訓練,他們就可以跳高了,這裡加入了跳高功能。請采用抽象類和接口來實作貓狗案列,并在測試類中進行測試。
代碼如下:
package test09;
public interface Jumpping {
public abstract void jump();
}
package test09;
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
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 abstract void eat();
}
package test09;
public class Cat extends Animal implements Jumpping{
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("貓吃魚");
}
@Override
public void jump() {
System.out.println("貓可以跳高了");
}
}
package test09;
public class Dog extends Animal implements Jumpping{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("狗啃骨頭");
}
@Override
public void jump() {
System.out.println("狗可以跳高了");
}
}
package test09;
public class AnimalDemo {
public static void main(String [] args)
{
Jumpping j = new Cat();
j.jump();
System.out.println("--------------");
Animal a = new Cat();
a.setName("加菲");
a.setAge(5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
a = new Cat("加菲",5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
System.out.println("----------------");
Cat c = new Cat();
c.setName("加菲");
c.setAge(5);
System.out.println(c.getName()+","+c.getAge());
c.eat();
c.jump();
}
}
題目38:
我們現在有乒乓球運動員和籃球運動員,兵乒球教練和籃球教練,為了出國交流,跟乒乓球相關的人員都需要學習英語。請用所學的知識分析,這個案例中有哪些具體類,哪些抽象類,哪些接口,并用代碼實作。
分析:
思路:
代碼如下:
package test10;
public interface SpeakEnglish {
public abstract void speak();
}
package test10;
public abstract class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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 abstract void eat();
}
package test10;
public abstract class Coach extends Person{
public Coach() {
}
public Coach(String name, int age) {
super(name, age);
}
public abstract void teach();
}
package test10;
public abstract class Player extends Person {
public Player() {
}
public Player(String name, int age) {
super(name, age);
}
public abstract void study();
}
package test10;
public class BasketballCoach extends Coach{
public BasketballCoach() {
}
public BasketballCoach(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("籃球教練教如何運球和投籃");
}
@Override
public void eat() {
System.out.println("籃球教練吃羊肉喝羊奶");
}
}
package test10;
public class PingPangCoach extends Coach implements SpeakEnglish{
public PingPangCoach() {
}
public PingPangCoach(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("乒乓球教練教如何發球和接球");
}
@Override
public void eat() {
System.out.println("乒乓球吃白菜和大米粥");
}
@Override
public void speak() {
System.out.println("乒乓球教練說英語");
}
}
package test10;
public class BasketballPlayer extends Player{
public BasketballPlayer() {
}
public BasketballPlayer(String name, int age) {
super(name, age);
}
@Override
public void study() {
System.out.println("籃球運動員學習如何運球和投籃");
}
@Override
public void eat() {
System.out.println("籃球運動員吃牛肉喝牛奶");
}
}
package test10;
public class PingPangPlayer extends Player implements SpeakEnglish{
public PingPangPlayer() {
}
public PingPangPlayer(String name, int age) {
super(name, age);
}
@Override
public void study() {
System.out.println("乒乓球運動員學習如何發球和接球");
}
@Override
public void eat() {
System.out.println("乒乓球運動員吃大白菜喝小米粥");
}
@Override
public void speak() {
System.out.println("乒乓球運動員說英語");
}
}
題目39:
實作冒泡排序。
代碼如下:
package test11;
public class ArrayDemo {
public static void main(String [] args)
{
int [] arr = {24,69,80,57,13};
System.out.println("排序前:"+arrayToString(arr));
for (int j = 0;j<arr.length-1;j++)
for (int i = 0;i<arr.length-1-j;i++)
if (arr[i] > arr[i+1])
{
int tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
System.out.println("排序後:"+arrayToString(arr));
}
public static String arrayToString(int [] arr)
{
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0;i<arr.length;i++)
{
if (i==arr.length-1) sb.append(arr[i]);
else sb.append(arr[i]).append(",");
}
sb.append("]");
String s = sb.toString();
return s;
}
}
題目40:
字元串中資料排序。
需求:有一個字元串:“91 27 46 38 50”,請寫程式實作最終輸出結果是:“27 38 46 50 91”。
代碼如下:
package test13;
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args ) {
String s = "91 27 46 38 50";
String[] strArray = s.split(" ");
// for (int i = 0;i<strArray.length;i++) System.out.println(strArray[i]);
int[] arr = new int[strArray.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
for (int i = 0;i<arr.length;i++)
{
if (i==arr.length-1) sb.append(arr[i]);
else sb.append(arr[i]).append(" ");
}
String ans = sb.toString();
System.out.println(ans);
}
}
題目41:
需求:
定義一個日期工具類(DateUtils),包含兩個方法:把日期轉換為指定格式的字元串;把字元串解析為指定格式的日期,然後定義一個測試類(DateDemo),測試日期工具類的方法。
代碼如下:
package test14;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private DateUtils(){}
public static String dateToString(Date date, String format)
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}
public static Date stringToDate(String s,String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}
}
package test14;
import java.text.ParseException;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws ParseException {
Date d = new Date();
String s1 = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1);
String s2= DateUtils.dateToString(d,"yyyy年MM月dd日");
System.out.println(s2);
String s3 = DateUtils.dateToString(d,"HH:mm:ss");
System.out.println(s3);
System.out.println("---------------------------");
String s = "2048-08-09 12:12:12";
Date dd = DateUtils.stringToDate(s,"yyyy-MM-dd HH:mm:ss");
System.out.println(dd);
}
}
題目42:
擷取任意一年的二月有多少天?
代碼如下:
package test15;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份");
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DATE,-1);
System.out.println(c.get(Calendar.DATE));
}
}
題目43:
Collection集合存儲學生對象并周遊。
需求:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合。
代碼如下:
package test16;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
package test16;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionDemo {
public static void main(String[] args)
{
Collection<Student> c = new ArrayList<Student>();
Student s1 = new Student("Tom",35);
Student s2 = new Student("Jack",45);
Student s3 = new Student("Lily",13);
c.add(s1);
c.add(s2);
c.add(s3);
Iterator<Student>it = c.iterator();
while(it.hasNext())
{
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
}
}
題目44:
需求:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合。
代碼如下:
package test17;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String [] args)
{
List<Student> list = new ArrayList<Student>();
Student s1 = new Student("Tom",35);
Student s2 = new Student("Jack",34);
Student s3 = new Student("Lily",15);
list.add(s1);
list.add(s2);
list.add(s3);
Iterator<Student> it = list.iterator();
while(it.hasNext())
{
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
System.out.println("----------------------------");
for (int i = 0;i<list.size();i++)
{
Student s = list.get(i);
System.out.println(s.getName()+","+s.getAge());
}
}
}
題目45:
List集合存儲學生對象用三種方式周遊。
需求:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作該控制台周遊該集合。
代碼如下:
package test18;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args)
{
List<Student> list = new ArrayList<Student>();
Student s1 = new Student("Tom",30);
Student s2 = new Student("Jack",35);
Student s3 = new Student("Lily",18);
list.add(s1);
list.add(s2);
list.add(s3);
Iterator<Student> it = list.iterator();
while(it.hasNext())
{
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
System.out.println("---------------------------------");
for (int i= 0;i<list.size();i++)
{
Student s = list.get(i);
System.out.println(s.getName()+","+s.getAge());
}
System.out.println("----------------------------------");
for (Student s:list)
{
System.out.println(s.getName()+","+s.getAge());
}
}
}
題目46:
ArrayList集合存儲學生對象用三種方式周遊。
需求:
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合。
代碼如下:
package test20;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo {
public static void main(String[] args)
{
ArrayList<Student> array = new ArrayList<Student>();
Student s1 = new Student("Tom",30);
Student s2 = new Student("Jack",31);
Student s3 = new Student("Lily",32);
array.add(s1);
array.add(s2);
array.add(s3);
for (int i = 0;i<array.size();i++)
{
Student s = array.get(i);
System.out.println(s.getName()+","+s.getAge());
}
Iterator<Student> it = array.iterator();
while(it.hasNext())
{
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
for(Student s:array)
{
System.out.println(s.getName()+","+s.getAge());
}
}
}
題目47:
HashSet集合存儲學生對象并周遊。
需求:
建立一個存儲學生對象的集合,存儲多個學生對象,使用程式實作并在控制台周遊該集合。
要求:
學生對象的成員變量值相同,我們就認為是同一個對象。
代碼如下:
package HashSetPackage02;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
if (age != student.age) return false;
return name != null ? name.equals(student.name) : student.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
}
package HashSetPackage02;
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args)
{
HashSet<Student> hs = new HashSet<Student>();
Student s1 = new Student("Tom",35);
Student s2 = new Student("Lily",23);
Student s3 = new Student("Jack",17);
Student s4 = new Student("Tom",35);
hs.add(s1);
hs.add(s2);
hs.add(s3);
hs.add(s4);
for (Student s:hs)
{
System.out.println(s.getName()+","+s.getAge());
}
}
}
題目48:
成績排序。
需求:
用TreeSet集合存儲多個學生資訊(姓名,國文成績,數學成績),并周遊該集合。
要求:按照總分從高到低出現。
代碼如下:
package GradeSortPack;
public class Student {
private String name;
private int chinese;
private int math;
public Student() {
}
public Student(String name, int chinese, int math) {
this.name = name;
this.chinese = chinese;
this.math = math;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getChinese() {
return chinese;
}
public void setChinese(int chinese) {
this.chinese = chinese;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getSum()
{
return this.chinese+this.math;
}
}
package GradeSortPack;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args)
{
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
// int num = (s2.getChinese()+s2.getMath())-(s1.getChinese()+s1.getMath());
int num = s2.getSum()-s1.getSum();
int num2 = num==0?s1.getChinese()-s2.getChinese():num;
int num3 = num2==0?s1.getName().compareTo(s2.getName()):num2;
return num3;
}
});
Student s1 = new Student("Tom",98,100);
Student s2 = new Student("Jack",95,95);
Student s3 = new Student("Lily",100,97);
Student s4 = new Student("Bom",98,98);
Student s5 = new Student("ZhJk",100,98);
Student s6 = new Student("Yuio",98,100);
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.add(s5);
ts.add(s6);
for (Student s:ts)
{
System.out.println(s.getName()+","+s.getChinese()+","+s.getMath()+","+s.getSum());
}
}
}
題目49:
不重複的随機數。
需求:
編寫一個程式,擷取10個1-20之間的随機數,要求随機數不能重複,并在控制台輸出。
代碼如下:
package RandomNumPack;
import java.util.HashSet;
import java.util.Set;
import java.util.Random;
public class SetDemo {
public static void main(String[] args)
{
Set<Integer> set = new HashSet<Integer>();
Random r = new Random();
while(set.size() <10)
{
int number = r.nextInt(20)+1;
set.add(number);
}
for (Integer i:set)
{
System.out.println(i);
}
}
}
package RandomNumPack;
import java.util.HashSet;
import java.util.Set;
import java.util.Random;
import java.util.TreeSet;
public class SetDemo {
public static void main(String[] args)
{
Set<Integer> set = new TreeSet<Integer>();
Random r = new Random();
while(set.size() <10)
{
int number = r.nextInt(20)+1;
set.add(number);
}
for (Integer i:set)
{
System.out.println(i);
}
}
}
題目50:
HashMap集合存儲學生對象并周遊。
需求:
建立一個HashMap集合,鍵是學号(String),值是學生對象(Student)。存儲三個鍵值對元素,并周遊。
代碼如下:
package HashMapPrintPack;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
package HashMapPrintPack;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HashMapDemo {
public static void main(String[] args)
{
HashMap<String,Student> hm = new HashMap<String,Student>();
Student s1 = new Student("Tom",30);
Student s2 = new Student("Lily",18);
Student s3 = new Student("Jack",27);
hm.put("001",s1);
hm.put("002",s2);
hm.put("003",s3);
//方式1
Set<String> keySet = hm.keySet();
for (String key:keySet)
{
Student value = hm.get(key);
System.out.println(key+","+value.getName()+","+value.getAge());
}
System.out.println("----------------------------------------");
//方式2
Set<Map.Entry<String,Student>> entrySet = hm.entrySet();
for (Map.Entry<String,Student> me:entrySet)
{
String key = me.getKey();
Student value = me.getValue();
System.out.println(key+","+value.getName()+","+value.getAge());
}
}
}