java學習日記第四天

hello 你們好java

跳轉語句:三個:c++

break;跳出當前循環體數組

continue;跳過本次循環,continue;下代碼不執行直接進行下一次循環性能

ruturn;結束當前方法;blog

public static void main(String[] args) 
	{
		Test1
		.xunHuanDemo();
		  //.array1();
		//.array2();
		//.suanfa1();
	}
	public static void xunHuanDemo()
	{
		int i=0;
		for(i=0;i<5;i++)
		{
			if(i==3)
			{
				continue;
			}
		}
		while(i<5)
		{
			i++;
			
			if(3==i)
			{
			System.out.println("此時i的值 : "+i);
			//continue;
		     break;
		     //return;
			}
			System.out.println("第"+i+"個數是: "+i);
			
		}
	}
}

  咱們把while循環體裏邊的if(3==i)裏的三個語句挨個註釋執行,咱們就會發現這三個語句的特色。遊戲

2.java中數組的問題數學

數組的定義for循環

public static void main(String[] args) 
	{
		Test1
		//.xunHuanDemo();
		  .array1();
		//.array2();
		//.suanfa1();
	}	
public static void array1()
	{
		int arr1[]=new int[10];
		arr1[4]=1;
		int a,c=0;
		a=arr1[4];
		System.out.println("a的值"+a+"arr1[4]的值是"+arr1[4]);
		int arr2[]={1,2,3,4,5,6,7,8,9,10};
		for(int b:arr2)
		{
			c++;
			System.out.println("arr2["+c+"]的值爲 : "+b);
		}
		for(c=0;c<arr1.lengch;c++)
		{
			System.out.println("arr1["+c+"]的值爲 : "+arr1[c]);
		}
	}

 在這個代碼中:咱們用了兩種方式定義數組class

第一種:數據類型 數組名稱[]=new 數據類型[n] ;代碼中咱們就定義了一個長度爲10的int類型的數組arr1,初始值所有爲0(默認)。而後咱們給arr[4]賦值1,並能夠把arr[4]的值賦值給a,咱們用for-each語句循環打印數組arr,發現除了咱們賦值爲1的arr[4]外其他都爲0,也就證實了咱們的java數組所有默認爲0的事實。循環

第二種:數據類型 數組名稱[]={初始值1,初始值2}。代碼中咱們頂一個了個數組arr2,直接賦給初始值1-10,java會本身計算出數組的長度。咱們用arr2.length的語法獲取他的長度。咱們用for循環語句打印發現咱們的長度是正確的。

for-each循環語句。對順序數組的遍歷很是好用。比for循環語句性能更高。數組遍歷從頭開始。

在java中也有二維 三維 多維數組的概念:

public static void array2()
	{
		int arr3[][]=new int[3][4];
		System.out.println(arr3.lengch);
		int a1[]={1,2,3,4};
		int a2[]={5,6,7,8};
		int a3[]={9,10,11,12};
		int arr4[][]={a1,a2,a3};
		for(int i=0;i<arr4.lengch;i++)
			{	
			for(int j=0;j<arr4[i].lengch;j++)
				{
				System.out.print("arr4["+i+"]["+j+"]的值爲"+arr4[i][j]+" \t");
				}
			System.out.println();
			}
		for(int i=0;i<3;i++)
		{	
		for(int j=0;j<4;j++)
			{
			System.out.print("arr3["+i+"]["+j+"]的值爲"+arr3[i][j]+"\t");
			}
		System.out.println();
		}
	}

  咱們這個方法中就實現了兩種二維數組的定義:

第一種:數據類型 數組名稱[][]=new 數據類型[][];在代碼中咱們定義了一個三行四列的int類型的數組arr3。一樣咱們用for循環打印發現初始值爲0.。相信你們對arr3.length的值有疑問。爲啥3*4=12個值,他的長度只有三。由於length計算的都是第一個表示數組的長度。好比arr3[3][4]中arr3[3]就能夠表示數組,因此就是他的長度3.而咱們二層for循環中arr3[i].length的意思就是arr3[i]這已經表示一個數啦,意思是第幾行。再點length就是這一行的長度4.

第二種:就是爲了讓咱們理解點length的長度問題。arr4中初始化了三個長度爲4的數組a1,a2,a3。

咱們來作幾道關於數組的題目:

第一題:比賽計分問題

某比賽,有N位評委爲選手打分,分數在1到100之間.選手最後得分爲去掉一個最高分,去掉一個最低分以後的平均分.請應用程序實現。

public static void dafen(double fen[])
	{
		
		double max=fen[0];
		double min=fen[0];
		double sum=0;
		for(double a:fen)
		{
			if(max<a)
			{
				max=a;
			}
			if(min>a)
			{
				min=a;
			}
			sum+=a;
		}
		double avg=(sum-max-min)/(fen.lengch-2);
		System.out.println("平均分是 :"+avg);
	}

  問題分析,N個分數。去除最大最小。剩下加起來,求平均值。這就要求咱們所有分數得遍歷一遍,正好在遍歷的時候求出最大和最小值,而後把全部值加起來。而後總分數去除最大最小,除以剩下的打分人數就能夠獲得平均值啦。這裏咱們把方法寫成帶參數,這樣咱們就能夠隨便往裏邊傳N個參數。不須要去方法裏改變代碼。體現了封裝的穩定性。

第二個問題: 農夫與白菜

       農夫沿着自家院子種植了一圈大白菜,到了秋天,農夫收穫白菜的時候,他計劃這樣收割:從第一顆開始,數到三就砍掉當前的這顆白菜.請您打印出被砍掉白菜的序號;

public static void baicai()
	{
		//白菜的圍成一圈的順序編號
		int  baic[]={1,2,3,4,5,6,7,8,9,10,11,12};
		//定義一個計數器記錄砍掉的白菜數。
		int sum=0;
		//定義計數每喊三聲砍一顆;
		int j=0;
		//砍掉的白菜數小於總的白菜數就一直循環砍
		while(sum<baic.lengch)
		{	
			for(int i=0;i<baic.lengch;i++)
			{
				//查看標記,該白菜是否被砍。
				if(baic[i]!=0)
				{
					j++;
					if(j==3)
					{
					//把砍掉的白菜打印輸出
					System.out.print(baic[i]+",");
					//給砍掉的坐上標記,再也不循環這個白菜
					baic[i]=0;
					//重新喊數
					j=0;
					//砍得數量加一
					sum++;
					}
				}
				
			}
		}
	}

  

  問題分析,白菜圍滿一圈院子,沒喊三聲砍一顆白菜,砍完便少一顆,把每一次砍得打印出來。而且再砍以前看一下標識是否已經被砍。

該代碼註釋十分清晰。但數組是寫死的,你們能夠改爲傳參方法更好。

問題三:約瑟夫問題

這是17世紀的法國數學家加斯帕在《數目的遊戲問題》中講的一個故事: 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其他的人才能倖免於難,因而想了一個辦法:30我的圍成一圓圈,從第一我的開始依次報數,每數到第九我的就將他扔入大海,如此循環進行直到僅餘15我的爲止。問怎樣排法,才能使每次投入大海的都是非教徒。

public static void suanfa1()
	{
		int arr1[]=new int[30];
		arr1[0]=1;
		int count=0;
		for(int i=0,j=1;i<30;i++,j++)
		{
			if(arr1[i] == 1)
			{
				j--;
				continue;
			}
			if(9==j)
			{
				arr1[i]=1;
				j=0;
				count++;
				if(15==count)
				{
					break;
				}
			}
			if(29==i)
			{
				i=-1;
			}
			
		}
		int count1=0;
		String msg="";
		for(int a:arr1)
		{
			count1++;
			msg=(a==0)?"信徒":"非信徒";
			System.out.println("第"+count1+"我的是 : "+msg);
		}
	}

  這個和那個砍白菜差很少,可是這個排列就存在一點問題,那就是第一個站的是信徒仍是非信徒兩種狀況。咱們一樣根據每9人下海一我的。一輪迴設置一個計數器來存取當前數到第幾個。定義一個下海總數,到15就退出循環。某人下海後就標記下海,再次循環到該人不作9人計數。 

相關文章
相關標籤/搜索