課程:《程序設計與數據結構》
班級: 1823
姓名: 姬旭
學號: 20182334
實驗教師:王志強
實驗日期:2019年10月21日
必修/選修: 必修java
經過鍵盤輸入一些整數,創建一個鏈表(1分);
這些數是你學號中依次取出的兩位數。 再加上今天的時間。android
例如你的學號是 20172301 今天時間是 2018/10/1, 16:23:49秒 數字就是 20, 17,23,1, 20, 18,10,1,16,23,49
打印全部鏈表元素, 並輸出元素的總數。
在你的程序中,請用一個特殊變量名來紀錄元素的總數,變量名就是你的名字。 例如你叫 張三, 那麼這個變量名就是
int nZhangSan = 0; //初始化爲 0.git
作完這一步,把你的程序簽入源代碼控制(git push)。服務器
實現節點插入、刪除、輸出操做(2分,3個知識點根據實際狀況酌情扣分);網絡
繼續你上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器;數據結構
從磁盤讀取一個文件, 這個文件有兩個數字。 從文件中讀入數字1, 插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做。 從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,並繼續下面的操做。 從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數。
簽入全部代碼。ide
使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序(2分);
若是你學號是單數, 選擇冒泡排序, 不然選擇選擇排序。
在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素。函數
在(2)獲得的程序中繼續擴展, 用同一個程序文件,寫不一樣的函數來實現這個功能。 仍然用 nZhangSan (你的名字)來表示元素的總數。佈局
在android上實現實驗(1)和(2)
本題4分學習
在android平臺上實現實驗(3)
本題2分
本次實驗主要是用到了鏈表這個知識,我是用到了Node的方法,將head指針化,方便本身操做。
如下是結果:
第二個實驗要求用到文件讀寫,這就要回顧到以前學習網絡交互裏的知識,當時就用到了文件讀寫,那麼我再在這裏回顧一下代碼:
//將集合數據寫入磁盤 FileWriter fw = new FileWriter("D:\\IDEAAAA\\untitled5\\Week8\\List_practice\\title.txt"); for (String s : list) { fw.write(s); fw.write("\r\n"); } fw.close(); //讀取磁盤上文件數據 BufferedReader br = new BufferedReader(new FileReader("D:\\IDEAAAA\\untitled5\\Week8\\List_practice\\title.txt")); String line; //將讀取到的數據寫入到list集合中 List<String> list1 = new ArrayList<String>(); while ((line = br.readLine()) != null) { list1.add(line); } String pp = ""; //循環輸出list集合 String s = list1.toString(); pp = s.substring(1,s.length()-1); br.close();
說實話這裏我忘了不少也是再自學了一遍才明白怎麼寫代碼。
如下是運行結果:
這個實驗相對前兩個實驗來講就是加了個排序,選擇排序仍是冒泡排序,不管哪個都很重要。
如下是運行結果:
(4)和(5)都是要求在Android上實現,自我感受入門較難,我也是琢磨了很長時間,最後是結對夥伴來幫了我一把,我才得以運行出來以及後面的實現。
如下是運行結果:
(5)同(4)同樣,難就難在開頭的地方,其餘還好。
如下是運行結果:
public class MainActivity extends AppCompatActivity { EditText editText1; EditText editText2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1 = (EditText)findViewById(R.id.editText1); editText2 =(EditText)findViewById(R.id.editText2); Button button = findViewById(R.id.button); button.setOnClickListener(OnClickListener); } View.OnClickListener OnClickListener = new View.OnClickListener() { @Override public void onClick(View v) { String get = editText1.getText().toString(); editText2.setText(a.toString());
其中exitTest和button都是後面加上去的,起着關鍵做用,鏈接其屏幕輸出和輸入。
String get = editText1.getText().toString(); editText2.setText(a.toString());
這兩行代碼一樣起着關鍵做用,控制着屏幕的輸入和輸出。
問題2:關於佈局方面,搞不懂線性佈局和約束佈局之類的區別。
問題2解決方案:上網找博客Android Studio 經常使用控件和經常使用佈局的介紹
,裏面雖然講的不是特別詳細,但基本上全都覆蓋了,能讓初學者快速入門。
所謂線性佈局就是總體在一條線上,不能隨意改動。相對來講約束佈局就很自由了,裏面的控件很容易控制和改動,帶來了方便。
InputStream input=getResources().openRawResource(R.raw.test); /* Reader reader=new InputStreamReader(input);*/ BufferedInputStream bufferedInputStream=new BufferedInputStream(input); byte[]buffer=new byte[1024]; String content=""; int flag=0; while(true){ try{ if(!((flag=bufferedInputStream.read(buffer))!=-1))break; }catch(IOException e){ e.printStackTrace(); } content+=new String(buffer,0,flag); }
問題4:在新建文件的時候,不知道在Android環境裏文件是在哪裏新建,也就是這裏出現了問題:
問題4解決方案:問結對夥伴,得知是在res文件下新建Android Resource Directory,在裏面把type改成raw類型,以後在raw文件下建立text文本,最終解決問題。
學習java不易,學習數據結構一樣不易。不管是哪一種語言,都要經歷自學和不斷摸索,固然摸索的過程是苦澀的,是很煩人的,是崩潰的,是無助的,但當本身把問題解決了以後,你會發現本身學到了不少知識,是曾經的本身所沒法匹敵的,也是本身所期待的。當全部問題都解決以後,永遠會有新的問題出現,繼續折磨你,若是說你感到無事可作,那種感受就和死了同樣,很恐怖,也會讓人墮落。人的一輩子都是在不斷創造問題解決問題,再創造問題的過程當中不斷前進,否認之否認,會讓咱們更強。