增加網址:
文章備註、標題(會記錄下來,但是暫時不會顯示):
[綜合]無題 無名 ID:JOyA01Jk 17/08/26(六)14:39:41 No.9729137
評分:1, 年:1, 月:1, 週:1, 日:1, [+1 / -1] 最後更新:2022-03-01 09:14:35
附圖
白天都不想畫畫...寫了一個練習課題產生器

不過也不會照著練...= =

[aa]
import java.util.Scanner;

public class PaintingPractice {

public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
String[] type = {"武器","上色","植物","分鏡","下半身","肌肉","服裝","背部","背景","五官","姿勢","構圖","綜合練習","頭髮"};
int count = 14;
System.out.println("今天要做幾項練習? (MAX:5)");
char n;
do{
n = scanner.next().charAt(0);
if(n < 49 || n > 53)
System.out.print("輸入錯誤");
}while(n < 49 || n > 53);

System.out.println("本日練習:");
for(int i = 0;i < (n - 48);i++){
int random = (int)(Math.random() * count);
System.out.println((i + 1) + "." + type[random]);
count--;
for(int j = random;j < count;j++)
type[j] = type[j + 1];
}
}
}
[/aa]
無題 無名 ID:NHOgTAlo 17/08/26(六)14:54:45 No.9729219
回覆: >>9729235
幹麻不用數字判斷硬要用字元
我打兩位數就有BUG了= =
無題 無名 ID:jzdvUYnY 17/08/26(六)14:55:20 No.9729225
可以幫我改成尻尻課題產生器嗎= =
無題 無名 ID:JOyA01Jk 17/08/26(六)14:57:52 No.9729235
附圖
>>9729219
不是跟你說max : 5了嗎= =
誰叫你硬要爆表的
一天能做3個課題練習已經很強了啦
別貪心好嗎

>幹麻不用數字判斷硬要用字元
用char判斷以防有白目給我輸入ABC或$#%@之類的奇怪東西阿
還不會try-catch= =

>可以幫我改成尻尻課題產生器嗎= =
你提供一些關鍵字阿= =
無題 無名 ID:QYLyWsQE 17/08/26(六)15:03:47 No.9729269
>>9729235
>以防有白目給我輸入ABC或$#%@之類的奇怪東西
你把所有輸入都轉型成int不就好了= =
這樣就可以用數字判斷了
無題 無名 ID:1.zZhqPE 17/08/26(六)15:05:12 No.9729272
覺得練習這個好浪費時間...
有些程式只需要時間農出來而已

等需要的時候再寫就好了
我每次都這樣想
無題 無名 ID:vDe25E0I 17/08/26(六)15:05:28 No.9729273
>>9729235
幹你都要預防字元白目了
就給我預防一下二位數白目阿= =
無題 無名 ID:JOyA01Jk 17/08/26(六)15:08:56 No.9729293
附圖
>就給我預防一下二位數白目阿= =
>你把所有輸入都轉型成int不就好了= =
轉型還是爆掉了
幹好麻煩喔 我決定去畫畫了= =
無題 無名 ID:a9uWvnXE 17/08/26(六)15:14:52 No.9729326
回覆: >>9729377
1. do while 跟if 條件重複,另外你收char,卻用來當int比較,不是好習慣
2. 特意用49~53區間意義是什麼? 你文字提示不是max 5嗎?
3. type[14]有很小的可能出錯
4. 為什麼不用linklist來寫?
無題 無名 ID:NHOgTAlo 17/08/26(六)15:22:54 No.9729377
>>9729326
他那就是1~5的ASCII的字元編號
你這個不知道也有點扯...

還有就跟上面說的一樣
你居然想到要防亂打字的白目
居然不會想防二位數白目
這思維有點跳躍 我寧願檔會打超過5的白目也不想檔亂打字的白目
無題 無名 ID:JOyA01Jk 17/08/26(六)15:25:31 No.9729400
附圖
我! 寫! 完! 了!

[aa]
import java.util.Scanner;

public class PaintingPractice {

public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
String[] type = { "武器", "上色", "植物", "分鏡", "下半身", "肌肉", "服裝", "背部", "背景", "五官", "姿勢", "構圖", "綜合練習", "頭髮" };
int count = 14;
System.out.println("今天要做幾項練習? (MAX:5)");
String inputStr;
int input = 0;
do {
inputStr = scanner.nextLine();

if (intOrNot(inputStr)) {
input = Integer.parseInt(inputStr);
if (input < 49 || input > 53)
System.out.print("輸入錯誤");

System.out.println("本日練習:");
for (int i = 0; i < input; i++) {
int random = (int) (Math.random() * count);
System.out.println((i + 1) + "." + type[random]);
count--;
for (int j = random; j < count; j++)
type[j] = type[j + 1];
}
}
else{
System.out.println("輸入錯誤");
input = 0;
}
} while (input < 1 || input > 5);
}

private static boolean intOrNot(String str) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) < 49 || str.charAt(i) > 58)
return false;
}
return true;
}
}
[/aa]

>1. do while 跟if 條件重複,另外你收char,卻用來當int比較,不是好習慣
if是為了印出錯誤訊息,經各位島民建議之後我也覺得這作法不好,會改掉

>2. 特意用49~53區間意義是什麼? 你文字提示不是max 5嗎?
char 49在ASCII編碼後就是數字1

>3. type[14]有很小的可能出錯
什麼意思? 我的資料是固定的,如果要擴充會另外寫擴增陣列的方法

>4. 為什麼不用linklist來寫?
還不會用...
無題 無名 ID:a9uWvnXE 17/08/26(六)15:31:55 No.9729441
>>9729400
抱歉,一時沒有想到ASCII

你的type[]宣告空間在0~13共14個
Math.random() * count值出來不是會在0~14嗎?
0和14的機率很小,出type[14]不就溢位,然後type[0]的武器機率應該超低
無題 無名 ID:JOyA01Jk 17/08/26(六)15:35:32 No.9729462
回覆: >>9729515
>>9729441
JAVA的random函數會隨機出0至0.999999999999999999999999的數字,不會擲出1

而Math.random() * count(假設是14)
再轉型成int就會變成隨機擲出0~13的數字,每個數字出現的機率一樣(忽略極微小誤差)

有錯請指證
無題 無名 ID:64sEoHhY 17/08/26(六)15:43:10 No.9729509
附圖
再來下一步
把pixiv上的常用tag抓下來
讓它隨機排列組合 :D
無題 無名 ID:a9uWvnXE 17/08/26(六)15:43:56 No.9729515
回覆: >>9729569
>>9729462
我微薄的記憶中是0~1.0 型別long
不過超過5年沒碰java,手上也沒書
被你這麼一講,我又不大確定了...
無題 無名 ID:3SwbboFM 17/08/26(六)15:45:22 No.9729523
回覆: >>9729539
各位大大拜託不要再寫c跟java好不好
除非你打算走這寫程式當工作那才有必要從低階語言開始學起
對非工程師而言 學python比較好
因為你真的會實際需要使用的情況都是要自動整理文檔或是文字處裡
這種情況你絕對不會想用c或c++寫
無題 無名 ID:a9uWvnXE 17/08/26(六)15:47:30 No.9729539
>>9729523
c跟java不都是高階嗎?
無題 無名 ID:3SwbboFM 17/08/26(六)15:49:37 No.9729552
>>9729441
遇到這種情況自己寫一個四捨五入的function就好了
沒必要在這裡想破腦筋跟承擔風險
無題 無名 ID:Y4pspFVQ 17/08/26(六)15:51:17 No.9729562
>>9729539
你知道現在Linux內核幾乎都用c寫的嗎
無題 無名 ID:3SwbboFM 17/08/26(六)15:51:23 No.9729565
>>9729539
不是喔
c java跟c++算是低階
python perl ruby javascript算是高階
自少我在國外工作是這樣分的
你可能是考慮組語
但是不管你把c 跟java當低階還高階,非工程師絕對是python比較好用
無題 無名 ID:a9uWvnXE 17/08/26(六)15:51:44 No.9729569
回覆: >>9729588
>>9729515
sorry 我查了一下,不是long...
無題 無名 ID:7sF.NXM. 17/08/26(六)15:51:50 No.9729571
>>9729539
對比python是低階
無題 無名 ID:3SwbboFM 17/08/26(六)15:55:43 No.9729588
回覆: >>9729644
>>9729569
有小數點要馬float要馬double
未看先猜double
無題 無名 ID:vDe25E0I 17/08/26(六)15:57:35 No.9729595
回覆: >>9729683
>>9729400
你有自己測試過嗎= =
無題 無名 ID:4cGPHQxU 17/08/26(六)16:00:09 No.9729607
我聽到的分法是組語是低階
C是比較特殊因為其他高階很多都用他的函示庫
勉強介於中間 其他通通是高階
無題 無名 ID:zKPN.3n6 17/08/26(六)16:03:08 No.9729625
>>9729607
所以說那是課本的分法
高低是相對的 不是絕對
無題 無名 ID:a9uWvnXE 17/08/26(六)16:05:37 No.9729644
>>9729588
對,是double沒錯XD
然後原po是對的,1.0是exclusive
無題 無名 ID:3SwbboFM 17/08/26(六)16:06:20 No.9729649
>>9729607
看你在哪個產業吧
你問一個backend工程師他可以會說組語
你對frontend工程師他會說是c c++
總之呢 重點不再這 重點是c c++除非你很在意performance跟memory不然實用性不高 學scripting language好上手又好用
無題 無名 ID:JOyA01Jk 17/08/26(六)16:12:39 No.9729683
回覆: >>9729694
附圖
>>9729595
只有測試輸入asd245$@#$會不會過
沒改到49 < n < 53...二位數又爆了...QQ蝦.........

第三回合
[aa]
import java.util.Scanner;

public class PaintingPractice {

public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
String[] type = { "武器", "上色", "植物", "分鏡", "下半身", "肌肉", "服裝", "背部", "背景", "五官", "姿勢", "構圖", "綜合練習", "頭髮" };
int count = 14,input = 0;
String inputStr;
do {
System.out.println("今天要做幾項練習? (MAX:5)");
inputStr = scanner.nextLine();
if (intOrNot(inputStr)) {
input = Integer.parseInt(inputStr);
if (input < 1 || input > 5){
System.out.print("輸入錯誤");
input = 0;
continue;
}

System.out.println("本日練習:");
for (int i = 0; i < input; i++) {
int random = (int) (Math.random() * count--);
System.out.println((i + 1) + "." + type[random]);
for (int j = random; j < count; j++)
type[j] = type[j + 1];
}
}

else{
System.out.println("輸入錯誤");
}
} while (input < 1 || input > 5);
}

private static boolean intOrNot(String str) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) < 48 || str.charAt(i) > 58)
return false;
}
return true;
}
}

[/aa]
無題 無名 ID:.n5OhzgM 17/08/26(六)16:12:45 No.9729685
幹這垃圾花了我半小時
https://codepen.io/anon/pen/yoxbKQ
無題 無名 ID:JOyA01Jk 17/08/26(六)16:14:47 No.9729694
回覆: >>9729700
附圖
>>9729683
print少了ln

GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN

這...這次一定可以的!!


[第四回合]
[aa]
import java.util.Scanner;

public class PaintingPractice {

public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
String[] type = { "武器", "上色", "植物", "分鏡", "下半身", "肌肉", "服裝", "背部", "背景", "五官", "姿勢", "構圖", "綜合練習", "頭髮" };
int count = 14,input = 0;
String inputStr;
do {
System.out.println("今天要做幾項練習? (MAX:5)");
inputStr = scanner.nextLine();
if (intOrNot(inputStr)) {
input = Integer.parseInt(inputStr);
if (input < 1 || input > 5){
System.out.println("輸入錯誤");
input = 0;
continue;
}

System.out.println("本日練習:");
for (int i = 0; i < input; i++) {
int random = (int) (Math.random() * count--);
System.out.println((i + 1) + "." + type[random]);
for (int j = random; j < count; j++)
type[j] = type[j + 1];
}
}

else{
System.out.println("輸入錯誤");
}
} while (input < 1 || input > 5);
}

private static boolean intOrNot(String str) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) < 48 || str.charAt(i) > 58)
return false;
}
return true;
}
}

[/aa]
無題 無名 ID:1.zZhqPE 17/08/26(六)16:17:11 No.9729700
回覆: >>9729721
>>9729694
好好ㄛ 你還有這種熱忱= =
跟我當初學寫程式差不多
然而卻沒啥意義 哭
無題 無名 ID:.n5OhzgM 17/08/26(六)16:18:12 No.9729706
>>9729685
幹你娘忘記補上防重複
https://codepen.io/anon/pen/yoxbKQ
無題 無名 ID:a04.BUIw 17/08/26(六)16:21:24 No.9729721
回覆: >>9729787
>>9729700
其實大部分島民都等著看好戲
幾個很重要的基本觀念他根本都沒搞懂
遲早會華麗撞牆
無題 無名 ID:V6YIN8lY 17/08/26(六)16:22:05 No.9729724
附圖
>>9729685
受益良多
無題 無名 ID:JOyA01Jk 17/08/26(六)16:31:02 No.9729787
>>9729721
講得好像現在沒在撞牆一樣= =
如果大大願意教兩招的話我會很樂意學啦