天天看點

Java文法基礎50題訓練(上)

題目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 + "是奇數");
    }
}
           

測試結果:

Java文法基礎50題訓練(上)

題目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);
    }
}
           
Java文法基礎50題訓練(上)

題目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:

我們現在有乒乓球運動員和籃球運動員,兵乒球教練和籃球教練,為了出國交流,跟乒乓球相關的人員都需要學習英語。請用所學的知識分析,這個案例中有哪些具體類,哪些抽象類,哪些接口,并用代碼實作。

分析:

Java文法基礎50題訓練(上)

思路:

Java文法基礎50題訓練(上)

代碼如下:

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());
        }



    }
}