1. 程式人生 > >第二章學習筆記

第二章學習筆記

 一、教材學習內容總結

1、識別符號的使用方法以及語法規則

2、Unicode字符集,及Unicode字符集與ASCII碼之間的關係(U表前128個字元剛好是A碼)

3、常用的基本資料型別(string不在基本資料型別內,本質是個類)

4、基本資料型別的精度高低順序,及高精度轉低精度時造成的精度損失

5、使用Scanner的類方法輸入基本型資料

6、掌握格式控制符以及使用方法

7、陣列的宣告以及使用

8、使用length方法得到陣列的長度

9、陣列的引用使用規則以及本質變化

10、求二十個float值的平均數

package OneWeek;

import java.util.Scanner;

public class Two {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("請輸入若干個數,每輸一個數回車確認");
		System.out.println("最後輸入數字為零結束輸入操作");
		Scanner reader=new Scanner(System.in);
		double sum=0;
		double x=reader.nextDouble();
		int i=1;
		while(x!=0) {
			sum=sum+x;
			x=reader.nextDouble();
			i++;
		}
		System.out.println("sum="+(sum/i));
	}

}

11、 判斷輸入值是否在預設陣列中


package OneWeek;
import java.util.*;
public class One {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int start=0,end,middle;
		double a[]= {2.31,5.11,6.21,8.651,8.1131,7.21,6.11,7.361,4.11,11.21,12.61,1.1121,9.651,3.541,17.51,11.891,16.211,5.6651,8.6981,5.1341};
		int N=a.length;
		//冒泡法從小到大排列陣列a
		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				if(a[j]<a[i]) {
					double t=a[j];
					a[j]=a[i];
					a[i]=t;
				}
			}
		}
		Scanner scanner=new Scanner(System.in);
		System.out.println("輸入一個數,程式判斷該數是否在陣列中:");
		double number=scanner.nextDouble();
		int count=0;
		end=N;
		middle=(start+end)/2;
		//折中查詢法
		while(number!=a[middle]) {
			if(number>a[middle]) 
				start=middle;
			else if(number<a[middle])
				end=middle;
			middle=(start+end)/2;
			count++;
			if(count>N/2)
				break;
		}
		if(count>N/2) 
			System.out.printf(number+"不在陣列a中.\n");
		else
			System.out.printf(number+"在陣列a中.\n");
	}

}

 

二、教材學習中的問題和解決過程

1、問題:書本p21中對於flaot、double數字大小的對比:

float x=0.4F;
double y=0.4;

看似相同的小數,在比較的時候x值其實是要大於x值得。

解決:實際儲存中,由於float型變數分配四個位元組記憶體,佔32位,所以最多能夠保留8位有效數字。而double型變數分配八個位元組記憶體,佔64位,可以保留16位有效數字,因此,看似相同的數字在實際比較的時候,是要比較16位的,而x值從第九位數字開始就已經不受float控制,出現隨機值,所以從大小來說,x值是要大於y值得。

 

三、程式碼除錯中的問題和解決過程

暫無

 

四、學習思考與感悟

看似簡單的基礎,其實牽扯著許多本質的知識,比如各種基本資料型別的儲存方式、陣列引用的原理等,萬丈高樓平地起,想要技術更進一步,腳下的基礎其實才是關鍵所在,雖然不同於c語言這種機器語言,但java在我眼中還是有著許多c的身影,或者說,我們眼前的那麼多語言,其本質都離不開c吧。


五、學習進度條

   程式碼行數(新增/積累)  部落格量(新增/累計) 學習時間(新增/累計)     重要成長
   目標               7000行              30篇                400h  
 第一週              378/378               2/2               14/14  
 第二週              127/505               1/3                 5/19