Java基本語法

使用VSCode編譯Java

在電腦一個你想要的地方建一個資料夾

開啟WPILib的VSCode

並開啟剛剛你建立的資料夾

下載插件

點擊左側欄圖示

查詢Code Runner並下載 

查詢Extension Pack for Java並下載 

創建檔案

點選圖示並輸入檔案名稱:Main.java

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

在右側輸入以下程式

執行

點選右上角圖示執行程式,若順利執行並在下方出現Hello world!就代表環境建立成功了

第一個程式

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

Hello World

public class Main {

Hello World

類別名稱Main要跟檔名相同

Hello World

那如果檔案名稱不叫Main.java?

點選新增檔案

輸入檔案名稱Test.java

把剛剛原本的程式複製過去並將

public class Main改成

public class Test

*注意大小寫要一樣

public static void main(String[] args) {

Hello World

這是 Java 程式的"起點","目前"程式都寫在這行程式的{ }內

System.out.println("Hello world!");

Hello World

System.out.println() 輸出括號內的內容並換行(字串用""包住,字元用''包住)
System.out.print() ​輸出括號內的內容不換行

*記得最後要有分號

Hello World

跳脫字元(Escape Character)

\b

倒退字元(backspace)

\t

水平定位(tab)

\n

換行

\’

單引號

\”

雙引號

\\

倒鈄線

// 單行註解

/* 區塊註解 */
/*
    可以換行
*/

Hello World

註解

//
 
單行註解
/*、*/ 用這兩個東西包住的區塊註解
public class Main
{
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

Hello World

Java vs C++

#include <iostream>

using namespace std;

int main()
{
    cout<<"Hello World"<<endl;

    return 0;
}

Java

C++

題目

印出以下內容並以dog.java為檔名

   / \__
  (    @\___
  /         O
 /   (_____/
/_____/   U

記得要上傳作業表單

public class Main {

Hello World

在Java中所有的程式都必須要在class(類別)內(類別內的程式要用{}包住),這行程式便是宣告一個叫做Main的class,而且它是"public"(代表其他的class都可以使用它)

*整個檔案內只能有一個"public class",且該類別名稱必須跟檔名相同(Main.java)

public static void main(String[] args) {

Hello World

這是 Java 程式的"起點",這種方法(method)(或者叫函數function)被稱為"main"。

public  可以被任何程式呼叫
static 可以直接呼叫main()而不用實體化Main類別
void 代表這個method不會回傳值
main() 函式名稱
String[] args 命令列引數(Command-line Argument)
System.out.println("Hello world!");

Hello World

System 一個已經預先宣告好的Class,裡面有很多好用的method跟變數
out System中PrintStream類別的變數,並使用修飾符public、static、final定義
println() PrintStream內的一個method
輸出括號內的內容並換行(字串用""包住,字元用''包住)
print() out內的一個method
輸出括號內的內容不換行

*記得最後要有分號

變數

什麼是變數?

一個可以更改、運算有值的東西

//宣告定義變數
資料型態 變數名稱;

// 指定資料值給該變數
變數名稱 = 值;

//寫成一行並指定資料值
資料型態 變數名稱 = 值;

*注意:‘=’ 是「賦值」,而非「等於」的意思

int:整數

float、double:浮點數(小數)

char:字元 (如'a'、'A')

boolean:布林值(true / false)

String:字串("Hello")

資料型態

1.大小寫英文字母,視為不同變數

2.字首不能是數字

3.字首可以是底線('_')或錢字符號('$')

4.Java將大小寫英文視為不同字元

5.不能與保留字相同

Java 變數命名規則

保留字

 

assert

abstract

default

continue

goto

for

package

new

synchronized

switch

boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while

運算子

 

+ 加法運算 ; 字串則是將兩個字串進行串接
- 減法運算
* 乘法運算
/ 除法運算
% mod(取餘數運算)

算數運算子

範例

public class Main
{
	public static void main(String[] args) {
		System.out.println(7+3);
		System.out.println(7-3);
		System.out.println(7*3);
		System.out.println(7/3);
		System.out.println(7%3);
		System.out.println("Hello"+" World!");
	}
}
10
4
21
2
1
Hello World!

題目

給定有兩個球體,半徑為a、b兩變數(浮點數),請輸出兩球體總體積共多少?(V = ⁴⁄₃πr³, π=3.14)

 

檔名:Operator.java

記得要上傳作業表單

a += b          a = a + b​

a -= b          a = a - b​

a *=b         a = a * b​

a /= b         a = a / b​

a %= b        a = a % b

合併

+

正號運算子 (但就算沒加,預設就是正值)

-

負號運算子 (讓負值變正,正值變負)

++

遞增運算子,遞增1

--

遞減運算子,遞減1

!

布林反向運算子 (true變false,false變true)

單元運算子

int a = +10;
System.out.println(a);
int b = -a;
System.out.println(b);
a--;
System.out.println(a);
b++;
System.out.println(b);
boolean flag = true;
System.out.println(flag);
flag = !flag;
System.out.println(flag);
10
-10
9
-9
true
false

==

等於

!=

不等於

>

大於

>=

大於或等於

<

小於

<=

小於或等於

關係運算子

int a = 1;
int b = 2;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
false
true
false
false
true
true

條件運算子

boolean t = true;
boolean f = false;
System.out.println(t && t);
System.out.println(t && f);
System.out.println(f && t);
System.out.println(f && f);
System.out.println(t || t);
System.out.println(t || f);
System.out.println(f || t);
System.out.println(f || f);
true
false
false
false
true
true
true
false

&&

邏輯和(and)運算

||

邏輯或(or)運算

條件判斷

if (條件1) {
    條件1成立會做的事情;
}

語法

範例

if (1+1==2) {
    System.out.println("1+1==2");
}

條件判斷

if (條件1) {
    條件1成立會做的事情;
}else{
    條件1不成立,條件2成立會做的事情;
}

語法

範例

if (1+1==3) {
	System.out.println("1+1==3");
} else{
	System.out.println("1+1!=3");
}

條件判斷

if (條件1) {
    條件1成立會做的事情;
} else if (條件2) {
    條件1不成立,條件2成立會做的事情;
} else if (條件3) {
    條件1不成立,條件2成立會做的事情;
}
...
else {
    條件都不成立才會做的實情;
}

語法

範例

if (1+1==3) {
    System.out.println("1+1==3");
} else if(1+1!=2){
	System.out.println("1+1!=2");
} else{
	System.out.println("1+1==2 && 1+1!=3");
}

條件判斷

if (條件1) 
	條件1成立會做的事情;		//只有一行
else if (條件2) 
	條件1不成立,條件2成立會做的事情;	//只有一行
else if (條件3) 
	條件1不成立,條件2成立會做的事情;	//只有一行

...
else 
	條件都不成立才會做的實情;		//只有一行

語法

範例

if (1+1==3)
	System.out.println("1+1==3");
else if(1+1!=2)
	System.out.println("1+1!=2");
else
	System.out.println("1+1==2 && 1+1!=3");

條件判斷

題目

有a、b兩整數,請問輸出a、b之間的關係

(a>b、a=b、a<b)要換行

 

檔名:number_1.java

記得要上傳作業表單

題目

有a、b、c三相異整數,請問輸出a、b、c之間的關係

(a>b>c、a>c>b、b>a>c、b>c>a、c>a>b、c>b>a)

要換行

 

檔名:number_2.java

記得要上傳作業表單

題目

有三線段長分別為a、b、c三整數,請問此三線段是否能圍成一三角形

 

檔名:Triangle.java

記得要上傳作業表單

題目

給定月份為整數M,請輸出季節為何?

(季節:spring/summer/fall/winter,需要換行

spring:1-3月/summer:4-6月/fall:7-9月/winter:10-12月

 

檔名:Season_1.java

記得要上傳作業表單

if (a>b && b>c){
	
}

條件判斷

Nested if

number_2.java為例

if (a>b){
	if(b>c){
    	
    }
}

題目

給定月份為整數M,請輸出季節以及該月份為奇、偶數

(若為奇數月在季節後輸出"/odd months"並換行,若為偶數月在季節後輸出"/even month"並換行)

(季節:spring/summer/fall/winter

(例:若為1月則輸出spring/odd months)

spring:1-3月/summer:4-6月/fall:7-9月/winter:10-12月

 

檔名:Season_2.java

記得要上傳作業表單

一月 January
二月 February
三月 March
四月 April
五月 May
六月 June
七月 July
八月 August
九月 September
十月 October
十一月 November
十二月 December

條件判斷

switch case

switch(變數){
	case 數值1:
		當變數等於數值1要做的事
		break;
	case 數值2:
		當變數等於數值2要做的事
		break;
	default:
		當以上都不符合時要做的事
		break;
}
if(變數 == 數值1){
	當變數等於數值1要做的事
}
else if(變數 == 數值2){
	當變數等於數值2要做的事
}
else{
	當以上都不符合時要做的事
}

變數與數值:只能是整數、字元或是字串

記得要break

條件判斷

switch case——沒有break會怎樣?

switch(變數){
	case 數值1:
		當變數等於數值1要做的事
	case 數值2:
		當變數等於數值2要做的事
		break;
	default:
		當以上都不符合時要做的事
		break;
}

假設變數==數值1

會執行:

當變數等於數值1要做的事、當變數等於數值2要做的事

題目

給定月份為整數M,請輸出季節為何?(用switch case做)

(季節:spring/summer/fall/winter,需要換行

spring:1-3月/summer:4-6月/fall:7-9月/winter:10-12月

 

檔名:Season_switch.java

記得要上傳作業表單

迴圈

迴圈

for

for(初始化;迴圈判斷條件;重複式){
    //程式碼執行區塊
}
for(int i=0 ; i<10 ; i++){
     System.out.println("i : " + i );
}

語法

範例

i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
while(條件式){
    //程式碼執行區塊
}

//會先執行再判斷
do{
	//程式碼執行區塊
}while(條件式);
int intVal = 0;
while(intVal<10){
    System.out.println("while-intVal: " + intVal);
    intVal++;
}
intVal = 0;
do{
    System.out.println("do while-intVal: " + intVal);
    intVal++;
}while(intVal<10);

語法

範例

int intVal = 10;
while(intVal<10){
    System.out.println("while-intVal: " + intVal);
    intVal++;
}
intVal = 10;
do{
    System.out.println("do while-intVal: " + intVal);
    intVal++;
}while(intVal<10);

迴圈

while

題目

輸出100次"Hello World!"

 

檔名:Hello_World_100.java

記得要上傳作業表單

語法

迴圈

巢狀迴圈

for(初始化;迴圈判斷條件;重複式){
	for(初始化;迴圈判斷條件;重複式){
		for(初始化;迴圈判斷條件;重複式){
			...
		}
	}
}

題目

有一整數n,做一個 n 層的三角形,第 i 層就要有 i 個 "*"

(向左對齊)

 

檔名:Star_Triangle_1.java

記得要上傳作業表單

若n=3 則輸出:
*
**
***

題目

有一整數n,做一個 n 層的三角形,第 i 層就要有 i 個 "*"

(向右對齊)

 

檔名:Star_Triangle_2.java

記得要上傳作業表單

若n=3 則輸出:
  *
 **
***

題目

有一奇數n,做一個 n 層的三角形,第 i 層就要有相對輸量的 "*"

(置中對齊對齊)

 

檔名:Star_Triangle_3.java

記得要上傳作業表單

若n=3 則輸出:
  *
 ***
*****

題目

九九乘法表

1×1=1	2×1=2	3×1=3	4×1=4	5×1=5	6×1=6	7×1=7	8×1=8	9×1=9	
1×2=2	2×2=4	3×2=6	4×2=8	5×2=10	6×2=12	7×2=14	8×2=16	9×2=18	
1×3=3	2×3=6	3×3=9	4×3=12	5×3=15	6×3=18	7×3=21	8×3=24	9×3=27	
1×4=4	2×4=8	3×4=12	4×4=16	5×4=20	6×4=24	7×4=28	8×4=32	9×4=36	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	6×5=30	7×5=35	8×5=40	9×5=45	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	7×6=42	8×6=48	9×6=54	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	8×7=56	9×7=63	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	9×8=72	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81	

*注意方向

被乘數遞增乘數不變

被乘數不變乘數遞增

記得要上傳作業表單

前置修飾詞(Modifier)

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

前置修飾詞(Modifier)

存取權限修飾詞 (access level modifier)

 

修飾符

類別(class)

套件(package)

子類別(subclasses)

World

public

Y

Y

Y

Y

protected

Y

Y

Y

N

No modifier

Y

Y

N

N

private

Y

N

N

N

前置修飾詞(Modifier)

非存取權限修飾詞 (non access modifier)

 

修飾符

 

定義

   

static

 

用來修飾類別(最上層的不行用static修飾)、函數、變數,使其成為靜態成員

   

final

 

用來修飾類別、函數、變數,使其初始化後不能被改變

   

abstract

 

用來建立抽象類別與方法(之後有時間再講)

   

synchronized

 

執行緒(threads)專用,代表同時只能被一個執行緒取用(之後有時間再講)

   

前置修飾詞(Modifier)

非存取權限修飾詞 (non access modifier)——static

靜態的意思是在程式載入記憶體的時候,跟著程式一起在記憶體中佔有空間,永遠只佔著那一組記憶體空間,不管該類別被new幾個object,該值永遠都會是一樣的

唯一的!!

特性一:永遠會是一個唯一值!!

特性二:static可以透過類別直接存取使用!

前置修飾詞(Modifier)

非存取權限修飾詞 (non access modifier)——final

類別:當宣告在類別上時,該類別就無法被繼承!

函數:當一個函數被宣告為final時,則繼承他的子類別無法覆寫

變數:當一個變數被宣告為final時,意思是他是一個常數,是無法被修改的。

物件與類別

——簡單介紹

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

 

修飾符

類別(class)

套件(package)

子類別(subclasses)

World

public

Y

Y

Y

Y

protected

Y

Y

Y

N

No modifier

Y

Y

N

N

private

Y

N

N

N

物件與類別

物件導向是什麼?

‘以物件為中心思考與解決問題。物件可以是貓、狗、車子、...等’

< 實例(狗), 狗特性名子顏色年齡 ...等,牠的行為睡覺搖尾巴...等>

將一群相關的變數函數綁在一起,形成一個類別,並給予一個名子(物件),以利程式碼重複利用

物件與類別

屬性與方法

特性->屬性

名子顏色年齡 ...等

牠的行為->方法

睡覺搖尾巴...等

物件與類別

類別建立、實體化、賦值與提取

//定義類別
/*
class 類別名稱 {
      敘述區塊; //包含屬性和方法
}
*/

//示例
class Dog {
      String name; //屬性
      String color; //屬性
      int age;      //屬性
      void sleeping(){} //方法
      void breaking(){} //方法
}

public class Main{
  public static void main(String[] args){
      Dog myDog1; // 宣告 Dog 物件
      myDog1 = new Dog(); // 建立 myDog 物件空間

      //或是

      Dog myDog2 = new Dog(); //同時宣告與建立
      
      //賦值
      //利用.提取出類別內的屬性或方法(類似中文中的“的”)
      myDog1.name = "Corgi";	//myDog1的name = "Corgi"
      myDog2.name = "Bulldog";	// myDog2的name = "Bulldog"
      
      myDog1.sleeping();

      System.out.println("myDog1's name:" + myDog1.name);
      System.out.println("myDog2's name:" + myDog2.name);
  }
}

物件與類別

Java vs C++

//定義類別
/*
class 類別名稱 {
      敘述區塊; //包含屬性和方法
}
*/

//示例
class Dog {
      String name; //屬性
      String color; //屬性
      int age;      //屬性
      void sleeping(){} //方法
      void breaking(){} //方法
}

public class Main{
  public static void main(String[] args){
      Dog myDog1; // 宣告 Dog 物件
      myDog1 = new Dog(); // 建立 myDog 物件空間

      //或是

      Dog myDog2 = new Dog(); //同時宣告與建立
      
      //賦值
      //利用.提取出類別內的屬性或方法(類似中文中的“的”)
      myDog1.name = "Corgi";	//myDog1的name = "Corgi"
      myDog2.name = "Bulldog";	// myDog2的name = "Bulldog"
      
      myDog1.sleeping();

      System.out.println("myDog1's name:" + myDog1.name);
      System.out.println("myDog2's name:" + myDog2.name);
  }
}
#include <bits/stdc++.h>
using namespace std;

class Dog {
public:
    string name; //屬性
    string color; //屬性
    int age;      //屬性
    void sleeping(){} //方法
    void breaking(){} //方法
};

int main(){
  Dog myDog1; // 宣告 Dog 物件
  
  //或是

  Dog *myDog2 = new Dog(); // 宣告並建立 myDog 並分配記憶體給他
  
  //賦值
  //利用.提取出類別內的屬性或方法(類似中文中的“的”)
  myDog1.name = "Corgi";	//myDog1的name = "Corgi"
  //利用->(就是(*myDog2).name)(myDog2是指標!!)提取出類別內的屬性或方法(類似中文中的“的”)
  myDog2->name = "Bulldog";	// myDog2的name = "Bulldog"

  myDog1.sleeping();

  cout << "myDog1's name:" + myDog1.name << endl;
  cout << "myDog2's name:" + myDog2->name << endl;
  
  delete myDog2;	//	釋放記憶體
  
  return 0;
}
class test{
    int a = 1;
    static int b = 2;
    final int c = 3;
    private int d = 4;
}

public class modifier {
    int a = 1;
    static int b = 2;
    final int c = 3;
    public static void main(String[] args){
        // System.out.println(a);
        System.out.println(b);
        // System.out.println(c);

        modifier modifierObj = new modifier();
        System.out.println(modifierObj.a);
        System.out.println(modifierObj.c);
        // modifierObj.c = 4;

        System.out.println(test.b);
        test testObj = new test();
        System.out.println(testObj.a);
        System.out.println(testObj.c);
        // System.out.println(testObj.d);
        // modifierObj.c = 4;
    }
}

方法(method)

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

方法(method)

宣告

class Example{
  //type代表要回傳的資料型態 可以是前面講到的int、char... 或是void(不回傳)
  //example()內存放需要的參數
  type example(type name1, type name2......){	
	//執行內容
    return 數值;	//回傳是type的數值,若type為void則不用return這一行
  }
}

呼叫

class Example{
  //type代表要回傳的資料型態 可以是前面講到的int、char... 或是void(不回傳)
  //example()內存放需要的參數
  type example(type1 name1, type2 name2......){	
	//執行內容
    return 數值;	//回傳是type的數值,若type為void則不用return這一行
  }
}

public class Main{
  public static void main(String[] args){
  	Example example1 = new Example();
	example1.example(type1 name1, type2 name2......);	//若example type為void
    type x = example1.example(type1 name1, type2 name2......);	//若example type不為void
  }
}

方法(method)

範例

class Person{
  void person(){
 	System.out.println("I'm a person.");
  }
  
  double BMI(double weight, double height){
 	return weight/height/height;
  }
}

public class Main{
  public static void main(String[] args){
  	Person person = new Person();
	person.person();
    double x = person.BMI(60, 1.72);
    System.out.println(x);
  }
}

方法(method)

Modifier

class test{
    int a = 1;
    static int b = 2;
    final int c = 3;
    private int d = 4;
}

public class modifier {
    int a = 1;
    static int b = 2;
    final int c = 3;
    public static void main(String[] args){
        // System.out.println(a);
        System.out.println(b);
        // System.out.println(c);

        modifier modifierObj = new modifier();
        System.out.println(modifierObj.a);
        System.out.println(modifierObj.c);
        // modifierObj.c = 4;

        System.out.println(test.b);
        test testObj = new test();
        System.out.println(testObj.a);
        System.out.println(testObj.c);
        // System.out.println(testObj.d);
        // modifierObj.c = 4;
    }
}

方法(method)

回家作業HW

檔名:Method_2.java

1600cc 引擎的成本(cost)是 20000 元,售價(price) 25000 元

2000cc 引擎的成本是 25000 元,售價 35000 元

撰寫一個 Engine類別(裡面要有屬性:cost、price   方法:getProfit()),並製造一個 1600cc 的引擎及一個 2000cc 的 引擎物件,呼叫其 getProfit() 計算獲利並回傳,最後印出其傳回值。

 

範例輸出:

1600cc:5000

2000cc:10000

 

記得要上傳作業表單

方法(method)

回家作業HW

檔名:Method_3.java

Dog(Breed)的售價(Price)是2000
Cat的售價是1500
Pig的售價是2500
方法是輸出自己的物種和售價(例如:Pig:2500)
建立一個animal的類別(裡面屬性:Breed、Price     方法:GetAnimal()(回傳字串))
並新建Dog、Cat、Pig的物件,分別賦予其售價以及物種。用GetAnimal()輸出其物種和售價(例如:Pig:2500)

 

記得要上傳作業表單

方法(method)

請撰寫一個Asecond(空調)類別。Auto空調的成本是12000元,Manual空調的成本是10000元。請製造一個Auto的空調及一個Manual的空調,呼叫其 getCost()方法,印出其傳回值。

 

記得要上傳作業表單

Auto:12000
Manual:10000

方法(method)

記得要上傳作業表單

請設計一個ingredient類別並提供 getCost (成本) 及 getPrice (售價) 二個方法,各產生Apple、Banana、Pudding、Strawberry、Mango共五個物件,並印出它們的 cost 及 price

        物件          成本   售價

Apple 6.0 10.0
Banana 2.0 5.0
Pudding 3.0 5.0
Strawberry 1.0 5.0
Mango 2.0 5.0

 

 

方法(method)

記得要上傳作業表單

(1) 某校有兩種類別的老師:FullTime (專任老師) 及 PartTime (兼任老師)。
(2) 專任老師有以下的資料:name、rate (每小時標準工資)、totalHours。
(3) 專任老師薪水的計算方式為:salary = 9 * rate + ((totalHours – 9) * rate * 0.8)。
(4) 兼任老師有以下的資料:name、rate (每小時標準工資)、totalHours。
(5) 兼任老師新水的計算方式為:salary = totalHours * rate。
(6) 請為此學校新增兩名兼任老師及三名專任老師,並印出這五位教師的新資。

類別/name/rate/totalHours

兼任 John 400 2
兼任 Mary 300 4
專任 Peter 400 9
專任 Paul 300 12
專任 Eric 350 15
John-PartTime:800.0
Mary-PartTime:1200.0
Peter-FullTime:3600.0
Paul-FullTime:3420.0
Eric-FullTime:4830.0

方法(method)

(1) 請撰寫一個 LCD 類別。10 吋的成本是 2000 元,15 吋的成本是2500元,17 吋的成本是 3000 元。

(2) 請撰寫一個 CPU 類別。速度 1.66 的成本是 6000 元,速度 2.2 的成本是 8000元,速度 2.4 的成本是 11000 元。

(3) 請撰寫一個 HD 類別。120G 的成本是2400 元, 160G 的成本是 2800 元。

(4) 請使用以上的零件,撰寫以下的類別。

(5) 請撰寫一個 MiniNote 類別。MiniNote 類別的筆電有一個 10 吋的 LCD,一個速度 1.66 的 CPU 及一個 120G 的 HD。

(6) 請撰寫一個 Note15 類別。Note15 類別的筆電有一個 15 吋的 LCD, 一個速度 2.2 的 CPU 及一個 160G 的 HD。

(7) 這兩型筆電的成本是其零件成本的 1.4 倍。定價則是其零件成本的 2 倍。

(8) 請分別製造一個 MinitNote 筆電及一個 Note15 筆電,呼叫其 getCost 方法及 getPrice 方法,印出其成本及定價的傳回值。

記得要上傳作業表單

MiniNote cost:14559.999999999998, price:20800.0
Note15 cost:18620.0, price:26600.0

方法(method)

(1) 銀行共設有四種帳戶,分別是「定期存款」帳戶、「活期存款」帳戶、「優惠存款」帳戶及「基金存款」帳戶。前三種帳戶都有開戶人、年利率及帳戶餘額的資料。
(2) 每個帳戶都可以存款 (deposit)、提款 (withdraw)、查詢餘額 (balance)、加計利息 (addInterest)。
(3) 定期存款帳戶 (Deposit Account) 的年利率分 1、2、3 年期,各為 3%、4%、 5%。
(4) 活期存款帳戶 (FreeAccount) 的年利率為 2%。
(5) 優惠存款帳戶 (SpecialAccount) 的利率與活期存款同為 2%,但優惠存款帳戶餘額若保持在 10000 元以上則買賣基金可免手續費 (傳回布林值代表可/不可)。
(6) 基金存款帳戶 (FundAccount) 的必要資料有:開戶人、基金名稱、單位數、一個活期存款戶、一個優惠存款戶。買入的手續費為買入金額的 2%,賣出的手續費為賣出金額的 2%。基金存款帳戶可以買、賣、 查調餘額,這幾個功能均需傳入基金目前的價格。買賣基金由活期存款帳戶轉帳。
(7) 請先為 Peter 開設一個定期存款帳戶 (2年期,存入5000 元)、活期存款帳戶 (存入 20000 元)、優惠存款帳戶 (存入 10000 元)。並加總一年的利息後,再查詢各帳戶的餘額,依序列出「定期存款」、「活期存款」、「優惠存款」目前的餘額。
(8) 接著再為 Peter 新開設一個基金存款帳戶,並買入 A 基金 15000 元,價格為每單位 500 元。於三天後該基金跌價為每單位 300 元,請計算 目前基金的現額,及 Peter 活期存款帳戶的餘額,請接續 2.(7) 列出「基全現額」以及「活期餘額」。

記得要上傳作業表單

定期存款:5200
活期存款:20400
優惠存款:10200
基全現額:9000
活期餘額:5400

陣列

假設要用Java寫一個程式記錄36位同學的成績,要怎麼做呢?

 

我們需要建立36個變數,相當麻煩,因此我們需要利用陣列

int score1 = 76;
int score2 = 85;
int score3 = 92;
...
int score36 = 90;

陣列

宣告

int[] scores = {76, 85, 92, 67, 88, 76, 68, 79, 86, 78,
		65, 54, 85, 93, 85, 77, 63, 93, 73, 97,
                88, 83, 74, 76, 79, 92, 57, 85, 95, 53,
                76, 83, 70, 65, 89, 90};

索引

索引由0開始,由於長度是36,最後一個索引為35,如果存取超出索引範圍,就會出現 ArrayIndexOutOfBoundsException 的錯誤

System.out.println(scores[0]);		//76
System.out.println(scores[9]);		//78
System.out.println(scores[19]);		//97
System.out.println(scores[35]);		//90

System.out.println(scores[36]);	
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 36 out of bounds for length 36

陣列

假設有要存取兩個班級的同學的成績,要怎麼做呢?

——多維陣列

//二維陣列
int[][] scores = {
                  {91, 82, 75},
                  {84, 75, 93}
                };

//如果是三維陣列呢?
int[][][] scores = {
                  {{91, 82, 75},{84, 75, 93}},
                  {{71, 92, 65},{94, 93, 79}},
                  {{97, 63, 78},{83, 92, 77}}
                };
                
//以此類推四維(int[][][][])、五維(int[][][][][])......

陣列

陣列物件

如果事先不知道元素值,只知道元素個數,可以使用 new 指定長度來建立陣列。

public class Main
{
	public static void main(String[] args) {
	    
        int[] scores = new int[36];
        scores[0] = 76;
        scores[9] = 78;
        scores[19] = 97;
        scores[35] = 90;
	    System.out.println(scores[0]);		//76
        System.out.println(scores[9]);		//78
        System.out.println(scores[19]);		//97
        System.out.println(scores[35]);		//90
	}
}

陣列

(1)請用陣列方式寫出費氏數 0、1、1、2、3、5、8、13、21、34 的程式。
(2) 請事先宣告一個大小為 10 的整數陣列,將最前面兩個陣列指定費氏數的初始值,並利用初始值來計算其餘的費氏數。
(3) 以分行方式,顯示此費氏數的前 10 個數值。

記得要上傳作業表單

陣列

 

已知n個元素的整數數列,計算出這組數列的平均值,四捨五入至小數第2位。

陣列

記得要上傳作業表單

套件、載入

Package、import

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        int num1, num2, num3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入三個數字(以空白鍵分開):");
        num1 = scanner.nextInt();
        num2 = scanner.nextInt();
        num3 = scanner.nextInt();
        System.out.println("您輸入第一個數字為:" + num1 );
        System.out.println("您輸入第二個數字為:" + num2 );
        System.out.println("您輸入第三個數字為:" + num3 );

    }
}

載入

import

套件

package

Engine為例

物件與類別

——封裝、繼承、多型......

繼承

封裝

 

修飾符

類別(class)

套件(package)

子類別(subclasses)

World

public

Y

Y

Y

Y

protected

Y

Y

Y

N

No modifier

Y

Y

N

N

private

Y

N

N

N

多型

父類別可透過子類別衍伸成多種型態,而父類別為子類別的通用型態,再透過子類別可覆寫父類別的方法來達到多型的效果,也就是同樣的方法名稱會有多種行為。

建構子/this/super

繼續以程控小難題1為例

Homework

其他

Exceptions - Try...Catch

Threads

Lambda

基礎語法教完了🫠

方法(method)

題目

檔名:Method_1.java

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

先前有解釋這行程式的各個名詞意義,在經過我們學了這些東西之後我們可以模仿一個出來,將System改叫Sys,其於名稱不變,試著做出一組一樣功能的程式

System 一個已經預先宣告好的Class,裡面有很多好用的method跟變數
out System中PrintStream類別的變數,並使用修飾符public、static、final定義
println() PrintStream內的一個method
輸出括號內的內容並換行(字串用""包住,字元用''包住)
public class Main {
  public static void main(String[] args) {
    Sys.out.println("Hello world!");
  }
}
//println()部份這樣寫 no modifier 然後type自己判斷
type println(String str){
	System.out.println(str);
}

Java基本語法

By team7497

Java基本語法

  • 471