iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
Modern Web

自己開發一個~?系列 第 2

解釋從底開始~JAVA程式碼~

  • 分享至 

  • xImage
  •  

今天開始就是解釋JAVA程式碼~
/images/emoticon/emoticon04.gif

因為程式碼只是照打~真的知道自己在打甚麼嗎?
/images/emoticon/emoticon19.gif

這裡會介紹的程式碼就像蓋房子一樣會從底開始~

希望是可以真的跑出甚麼的~
才不會看不下去
/images/emoticon/emoticon04.gif

試試看下面程式碼會顯示?
/images/emoticon/emoticon19.gif


程式碼

package oop01;

import java.util.Scanner;

public class Text05 {

	public static void main(String[] args) {
		Product p1 = new Product();
		//System.out.println(p1.name);//private無法在外被使用
		p1.setInfo();
		p1.setPrice(100);

	}

}
class Product{
	private String name;
	private int price;
	
	void setInfo() {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入商品名稱:");
		String n = sc.nextLine();
		System.out.println("請輸入商品價格:");
		int p = sc.nextInt();
		name = n;
		price = p;
		System.out.println("已設定商品名:"+name+" 價格:"+price);
		
		
}
	
	void setPrice(int a) {
		price = a;
		System.out.println("已修改商品名:"+name+" 價格:"+price);
	}
}

顯示
https://ithelp.ithome.com.tw/upload/images/20231018/20119035TH4JPjhGb3.png

依序鍵入後顯示
https://ithelp.ithome.com.tw/upload/images/20231018/20119035jQxQXURge1.png


解釋程式碼

這段Java程式碼定義了兩個類別:Text05Product

  1. Text05 類別:

    • public static void main(String[] args) 是程式的進入點(主函式)。
    • main 函式中,它建立了一個 Product 物件 p1
    • 通過調用 p1.setInfo() 方法,它請求用戶輸入商品名稱和價格。
    • 然後,它調用 p1.setPrice(100) 方法,將商品價格設置為100。
  2. Product 類別:

    • 這個類別具有兩個私有成員變數:name(商品名稱)和 price(商品價格)。
    • setInfo() 方法是用來設定商品名稱和價格的方法。它使用 Scanner 類別來接收用戶輸入,並將輸入的值設置給 nameprice
    • setPrice(int a) 方法用於修改商品價格,它將傳入的整數 a 設置給 price,並顯示已修改的商品名稱和價格。

請注意,name 是私有變數,因此只能在 Product 類別內部訪問,無法在 Text05 類別中直接訪問,這是因為它被定義為私有(private)。這種封裝性確保了只有 Product 類別內部的方法可以訪問和修改 name

/images/emoticon/emoticon08.gif

程式碼

package oop01;

import java.util.Scanner;

public class Test08 {

	public static void main(String[] args) {
		Game g1 = new Game();

		g1.check(g1.keyin());
	}

}

class Game{
	int input=0, count=0;
	int ans = (int)(Math.random()*100);
	
	//接收輸入
	int keyin() {
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入0-99間任一整數");
		input = sc.nextInt();
		count++;
		return input;
	}
	
	//判斷
	void check(int a) {
		//當答錯時 a != ans
		while(a != ans) {
			if(a > ans) {
				System.out.println("數字太大,請重猜");
			}else {
				System.out.println("數字太小,請重猜");
			}				
			a = keyin();
		}
		//當答對時 a == ans
		System.out.println("猜對了,共猜次數:"+count);
	}
}

顯示
https://ithelp.ithome.com.tw/upload/images/20231018/20119035yZri9YrOgd.png
填入後
https://ithelp.ithome.com.tw/upload/images/20231018/20119035run42VBB9N.png
終於猜對
https://ithelp.ithome.com.tw/upload/images/20231018/20119035rr0mTn11kS.png


解釋程式碼

這段Java程式碼實現了一個猜數字遊戲,讓使用者猜一個0到99之間的隨機數字。

  1. Test08 類別:

    • public static void main(String[] args) 是程式的進入點(主函式)。
    • main 函式中,它建立了一個 Game 物件 g1
    • 然後,它調用 g1.keyin() 方法,該方法接受用戶輸入一個整數,並將輸入的數字返回。
    • 接著,它將使用者輸入的數字傳遞給 g1.check() 方法來檢查是否猜對。
  2. Game 類別:

    • 在這個類別中,有幾個成員變數:

      • input:用戶輸入的數字。
      • count:猜測次數。
      • ans:隨機生成的0到99之間的數字,用戶需要猜測的答案。
    • keyin() 方法用來接收用戶輸入,並將其存儲在 input 變數中,同時增加 count 累計猜測次數,然後返回用戶輸入的數字。

    • check(int a) 方法用來檢查用戶的猜測是否正確。當用戶的猜測 a 不等於正確答案 ans 時,它會提示用戶繼續猜測,並根據用戶的猜測給出提示是太大還是太小。當用戶猜中正確答案時,它會輸出猜對了的消息,並顯示猜測的總次數。

總結來說,這個程式碼實現了一個簡單的猜數字遊戲,讓用戶通過不斷猜測數字來試圖猜中隨機生成的數字,直到猜中為止。

/images/emoticon/emoticon08.gif

程式碼

package oop01;

import java.util.Scanner;

public class Test11 {

	public static void main(String[] args) {
		// 寫法:沒有變數 不能看剩下多少錢 無法操作第二次
		new Bank("小明", 2000).withdraw();
		// 有變數 可操作第二次
		Bank b1 = new Bank("小明", 2000);
		b1.withdraw();
		
		Bank b2 = new Bank("AA", 2000, "M");
		b1.withdraw();
		
		System.out.println(Bank.count);
		//若class沒有定義任何建構方法,JVM會自動補上"預設建構方法"
				//若class有定義建構方法,則需按照定義的來執行
				//Bank b2 = new Bank();

	}

}

class Bank {
	private String name;
	private int money;
	private String sex;

	static int count=0;
	// 建構方法
	Bank(String name, int money, String sex) {
		this.name = name;
		this.money = money;
		this.sex = sex;
		System.out.println("開戶成功1");
		count++;
	}

	Bank(String name, int money) {
		this.name = name;
		this.money = money;

		System.out.println("開戶成功2");
		count++;
	}

	void withdraw() {
		Scanner sc = new Scanner(System.in);
		System.out.println("請選擇功能:1[提款] 2[存款] 3[退出]");
		int a = sc.nextInt();
		if (a == 1) {// 提款
			System.out.println("請輸入金額");
			int m = sc.nextInt();
			if (m > money) {
				System.out.println("餘額不足");
			} else {
				money -= m;
				System.out.println("餘額= " + money);
			}
		} else if (a == 2) {// 存款
			System.out.println("請輸入金額");
			int m2 = sc.nextInt();
			money += m2;
			System.out.println("餘額= " + money);
		} else {
			System.exit(0);// 正常離開執行
		}
	}
}

顯示
https://ithelp.ithome.com.tw/upload/images/20231018/20119035Z4bqFYyfjG.png
依序填入
https://ithelp.ithome.com.tw/upload/images/20231018/20119035U8vJPrLQ8R.png


解釋程式碼
這段Java程式碼實現了一個簡單的銀行帳戶操作系統,並包含了幾個重要的概念,讓我們逐一解釋:

  1. Test11 類別:

    • public static void main(String[] args) 是程式的進入點(主函式)。
    • main 函式中,它展示了如何使用不同的建構方法(constructors)來創建 Bank 物件並進行操作。
    • 使用 new Bank("小明", 2000).withdraw() 的方式創建了一個匿名的 Bank 物件,進行提款操作。這種方式無法再次操作相同的帳戶。
    • 使用 Bank b1 = new Bank("小明", 2000); 創建了一個具名的 Bank 物件 b1,然後進行提款操作。這種方式可以多次操作相同的帳戶。
    • 使用 Bank b2 = new Bank("AA", 2000, "M"); 創建了一個具名的 Bank 物件 b2,並進行提款操作。
  2. Bank 類別:

    • 在這個類別中,有幾個成員變數:name(帳戶名稱)、money(帳戶餘額)和 sex(性別)。

    • count 是靜態(static)變數,用於計算建立的 Bank 物件數量。

    • 有兩個建構方法(constructors):

      • Bank(String name, int money, String sex) 接受三個參數,分別是帳戶名稱、初始餘額和性別。它初始化了這些變數並顯示 "開戶成功1",然後增加 count
      • Bank(String name, int money) 接受兩個參數,分別是帳戶名稱和初始餘額。它初始化這兩個變數並顯示 "開戶成功2",然後也增加 count
    • withdraw() 方法用來執行提款、存款或退出操作,它接受用戶的選擇,然後執行相應的操作。如果用戶選擇提款,它會檢查餘額並進行提款,如果選擇存款,則將金額加入餘額中,如果選擇退出,則程式結束執行。

這個程式碼演示了如何使用建構方法來初始化物件,並如何使用物件來執行不同的操作,例如提款和存款。程式還使用了靜態變數 count 來跟蹤建立的 Bank 物件數量。

/images/emoticon/emoticon08.gif

/images/emoticon/emoticon08.gif

謝謝收看/images/emoticon/emoticon41.gif


上一篇
起手式~介紹JAVA內容
下一篇
又是解釋程式碼
系列文
自己開發一個~?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言