文章

java修課心得-1

從入門到女裝,一起學java(?

java修課心得-1

對於java的想法

是這樣的,上學期的初階程式設計是c,這學期的程式設計是java。
java是一個我以前就看過,有點興趣但覺得他很怪,一直沒嘗試過的東西。

有玩過Minecraft的大家,應該多多少少都會看過副檔名是jar的檔案。
因為這樣才會對java有點興趣,但實際上看到java的寫法就覺得他很奇怪(
像是c++我只要cout<<"asd";就好了,python只要print("asd")就好了。
但是,但是,java要System.out.printf("asd");耶!

就……覺得好麻煩.w.

實際上課發生的事

為了寫c++,以前用過dev c++,為了寫python,用的是jupyter notebook
最後跑去用sublimesublime用一用又全部都改去用vscode了。
而在上課的時候,介紹到可以用來寫java的是eclipse

雖然這麼說有點抱歉,但我覺得eclipse有點醜……


後來第一堂課的時候就在研究怎麼在vscode上寫java。
看別人說要在vscode寫java會很麻煩的樣子。實際上用完感覺還好。

但是有個更快的方法是,直接用docker開一個容器就好ㄌ。


度ㄉ度度,只要容器弄好,載點你喜歡的vscode插件就可以直接寫java了。
如此的簡單輕鬆愜意,愛docker ouo。

課堂上的作業

這堂課是三學分的課,前兩個小時上課,最後一個小時會寫課堂作業(?
目前看來難度不高,只是到現在都還記不起來java語法,要到處偷:P
如果要說遇到的最大問題,大概就是我不熟java這傢伙了吧🥲

第一次作業

第一次作業來得突如其來,老師說因為前面有放假又是第一次上課才沒有課堂作業,這次就有ㄌ。
原本還在想著下午有事,要吃飯又要趕過去不知道會不會來不及。
一聽到可以提早下課,突然就變得會寫java了

這次遇到的問題,應該是開了一個檔案寫完之後,我不知道要怎麼在同一個資料夾底下開第二個java檔寫。
不知道為什麼直接開都執行不了,但又趕著離開所以就沒研究ㄌ。


題目與寫的code如下。

第一題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Scanner;
public class App {
    public static void main(String[] args) throws Exception {
        Scanner scn = new Scanner(System.in);
        char grade;
        System.out.print("請輸入成績(0-100): ");
        int score = scn.nextInt();
        if(score>=0 && score<=100)
        {
            switch(score/10)
            {
                case 10,9 -> grade = 'A';
                case 8 -> grade = 'B';
                case 7 -> grade = 'C';
                case 6 -> grade = 'D';
                default -> grade = 'F';
            }
            System.out.println("等級: "+grade);
        }
        else
        {
            System.out.print("分數輸入錯誤。\n");
        }
        scn.close();
    }
}

第二題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Scanner;
public class App {
    public static void main(String[] args) throws Exception {
        Scanner scn = new Scanner(System.in);
        float num1, num2, ans = 0;
        char choose;
        System.out.print("請輸入第一個數字: ");
        num1=scn.nextFloat();
        System.out.print("請輸入第二個數字: ");
        num2=scn.nextFloat();
        System.out.print("請選擇運算符號(+, -, *, /): ");
        choose=scn.next().charAt(0);
        if(choose=='+' || choose=='-' || choose== '*' || choose=='/')
        {
            switch(choose)
            {
                case '+' -> ans=num1+num2;
                case '-' -> ans=num1-num2;
                case '*' -> ans=num1*num2;
                case '/' -> ans=num1/num2;
            }
            System.out.println("計算結果: "+ans);
        }
        else
        {
            System.out.print("無效的運算符號。\n");
        }
        scn.close();
    }
}

第二次作業

這次的題目超級簡單,但我卡了好久QQ
我以為是環境沒弄好,因為我重灌電腦過,還不確定能不能穩定跑。
趕快把教室電腦打開之後發現也沒辦法,發現原因之後覺得自己好笨。

真的找不到問題只好跟助教求救了。
結果code是好的環境是好的,我只要輸入數字就好,但我沒有先輸出東西,讓我以為code沒在跑= =


baka mitai。

聽到助教去前面跟另一個助教講話,說到扣分什麼的。
這樣要被扣分也太殘忍了ㄅ可以放過我ㄇqwq。


題目與code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
public class App {
    public static void main(String[] args) throws Exception {
        Scanner scn = new Scanner(System.in);
        int counter = 1, sum = 0;
        int num = scn.nextInt();
        while (counter <= num) {
            if ((counter % 3 == 0 || counter % 5 == 0) && counter%7!=0)
            {
                sum = sum + counter;
                counter++; 
            }
            else
            {
                counter++;
                continue;
            }
            
        }
        System.out.printf("符合條件的數字總合為: %d%n", sum);
        scn.close();
    }
}

其實不用continue,但應題目要求就加一下。

第三次作業

上一次的第二周作業是第六週,不過這次是第八週,因為上星期放了一個大連假(清明連假)
因為這一次的題目就只是bubble sort,所以我就不開新的post了,直接更在這邊。

是說這次如果懶的話,其實老師給的範例程式碼就有bubble sort,直接偷過來就好了(

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class App {
    public static void main(String[] args) {
		int[] a={8, 3, 5, 4, 9, 2};
		int alen=a.length, tmp;
		System.out.print("排 序 前:    ");
		for(int i=0;i<alen;i++)
			System.out.print(a[i]+" ");
		System.out.println();
		for(int i=0;i<alen-1;i++)
		{
			for(int j=0;j<alen-i-1;j++)
			{
				if(a[j]>a[j+1])
				{
					tmp=a[j+1];
					a[j+1]=a[j];
					a[j]=tmp;
				}
			}
			System.out.print("第 "+i+" 次循環: ");
			for(int q=0;q<alen;q++)
				System.out.print(a[q]+" ");
			System.out.println();
		}
		System.out.print("排 序 後:    ");
		for(int i=0;i<alen;i++)
			System.out.print(a[i]+" ");
		System.out.println();
	}
}

第四次作業

2025.05.02更。
其實會來更新是因為剛考完期中,想來寫期中感想,但發現還有一次沒有更新,但寫在期中前面感覺不太好,所以來更這邊。
這次就是/10再取平方,沒什麼問題。
現在回來看一下才覺得他的題目看起來很像餵GPT生出來的,那個圖釘emoji

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class App {
    public static void main(String[] args) {
		int[] arr={10, 20, 30, 40, 50};
		modifyArray(arr);
		System.out.println("被修改的陣列內容:");
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		System.out.println("平均值為: "+average(arr));
	}
	static int modifyArray(int[] array)
	{
		int tmp=0;
		for(int i=0;i<array.length;i++)
		{
			array[i]=array[i]/10;
			tmp=array[i];
		}
		return tmp;
	}
	static double average(int[] scores)
	{
		double sum=0,ave=0;
		for(int i=0;i<scores.length;i++)
		{
			sum=sum+scores[i];
		}
		ave=sum/scores.length;
		return ave;
	}
}

感想

看來寫不出來,是因為我沒有女裝吧。

本文章以 CC BY-NC-ND 4.0 授權