今天是第一次在本網誌寫程式筆記d(`・∀・)b(字型設定20)
切入正題啦~
Problem:輸入一段文字,並且能判斷字串中是否有重複的字,沒有重複就輸出YES,有重複則輸出NO
新指令:s.indexOf("A")......在 String s 中找到第一個 A 的位置, s.indexOf("A")>=0表示有找到A、<0表示沒找到A
分析問題:假設字串是ABCDE,要判斷有無重複的話,就一個字對比其他字,看是否一樣
取A和B、C、D、E比,明顯會用到 for迴圈 和標示位置的 s.substring()
將s切割成兩段,並用s2.indexOf(s1)以s2包住s1,來判斷s2當中究竟可否找到s1
完成後就做成物件吧~
物件化後程式就變相當簡潔可愛了(*´∀`)~♥
來個進階挑戰~
Poblem:給一個直式的加法運算,方框中填入1~9,數字不可重複,使答案為1737
先講一下字串陣列,一般我們假設字元陣列是 int x[];或 int[] x;,意思是 宣告一個int的x[] 或 宣告一個int[]為x[]
字串陣列就是改成String []x;
在java陣列被視為一個物件,必須用 new 指令把他叫出來,此物件才有生成,否則只是宣告有這件事情而已,並未產生陣列
所以 宣告+叫出物件的方法是 :
(1) String[] x; x=new String[];
(2) String[] x=new String[];
(3) String[] x={"Hello","the","world"};
m[]=String[9];是指m陣列有九格(1x9),接者加一個for迴圈在m[k]裏頭塞1~9的數字,因為9個格子的名字是0~8,
所以想在第一格塞1得表示成:m[0]=1; 一般化就是 m[k]=k+1; //k從0開始的話
但因為我們宣告的陣列是字串陣列,裡頭放的東西也得是字串,所以用String.valueOf把數字轉字串
因為題目中的方框中數字都不能重複,且分成三列,便令x,y,z為分別三列,而且一列之中數字又不能重複,所以可以填入的最小值是123最大值是987
我先測x+y+z為1737 -->把三列數字看成一條字串 -->把字串中有0的去掉 -->用for(0~8)分別把字串中,沒有1的丟出、沒有2的丟出...
...沒有9的丟出;此處系統似乎把丟出的字串歸類到(k<=8);而剩下的字串是1~9都沒重複的,歸類在(k=9)或說(k>8),蠻有趣的
-->最後就用 %(整除後,輸出餘數)來把位數相加 -->得出答案
----------------------------------
關於用 for{if{break}}我研究後的理解是:把字串分成兩堆,k<=8和k>8,這部分是老師上課寫的旦沒聽懂,
因為對程式語言學得不多,不太知道運作機制,所以自己分析、拆解,得出這個結論
感覺和高中算排列組合的時候很像,有一類題目會把要排列組合的東西分成三堆,分法是"符合A情況的"、"符合B情況的"、"不屬於A也不屬於B的";反正不要的就丟後面蒐集起來就是了~
-----------------------------------------------------
原本是想作股票、財金新聞分析之類的網誌,不過大學變化很大呢~來修雙技能(二刀流x///不行會被噓),當我察覺到自己在做什麼時,人已經踏入程式設計領域啦 _(:3 」∠ )_
一開始是在facebook的網誌PO java筆記,但實在是太難用了@@