Java實驗2 方法與陣列

發表於2020-11-30

實驗目的:

(1)掌握一維陣列和二維陣列的定義、初始化方法。
(2)瞭解和初步應用java.lang.Math類的random()方法處理實際問題。
(3)瞭解增強for迴圈,並使用增強for迴圈順序訪問陣列元素。
(4)掌握String類中split方法、charAt方法以及length方法的使用。
(5)掌握Double、Integer等資料包裝類的parseDouble、parseInt等方法。
(6)掌握陣列的length屬性的應用

實驗內容:

(1)foreach迴圈

編寫一個程式,使用命令列引數的方式從控制檯讀入一組整數,利用foreach迴圈對其進行求和並輸出結果。

程式原始碼

import java.util.Scanner;
public class sum {
	public static void main(String args[]) {
		
	   Integer[] num = new Integer[5];
	   Scanner input = new Scanner(System.in);
	   for(int i=0;i<5;i++)
		   num[i]=input.nextInt();
	   int sum = 0;
	   //foreach迴圈
	   for(int i:num)
		   sum+=i;
	   System.out.println(sum);
	   
	}
}

程式執行結果貼圖

在這裡插入圖片描述

(2)分別用一維陣列(例子陣列如下 { 7, 4, 3, 9, 0, 6 })實現氣泡排序、選擇排序和插入排序中的兩種排序演算法,程式中要求加註釋。

程式程式碼:

執行結果貼圖:

(3)編寫程式實現兩個矩陣的相加、相乘。
要求程式執行結果形如如下顯示:
Array c
1 2 3
4 5 6
7 8 9
Array d
2 2 2
1 1 1
3 3 3
Array c+d
3 4 5
5 6 7
10 11 12
Array c*d
13 13 13
31 31 31
49 49 49

程式程式碼:

執行結果貼圖:

(4)將用“;”和“,”分割的包含數字字元的字串“23, 21.3, 33;34, 2, 1.9, 2.1;3, 3, 1, 3, 4, 4.9”中的資料解析出來放在一個double型別的二維陣列中,以分號分割二維陣列的每一行,以逗號分割每行中的各個元素。(利用String 的split方法)

程式程式碼:

public class number {
	public static void main (String args[]){
		
		String[]str = ("3, 21.3, 33; 34, 2, 1.9, 2.1; "
						+ "3, 3, 1, 3, 4, 4.9").split(";");//將每一行分開
		double [][]num = new double[str.length][];	//建立最終的儲存陣列
		
		for(int i = 0;i < str.length;i++)
		{
			String []temp = str[i].split(",");	//在某行中數字按","分開
			num[i] = new double[temp.length];
			for(int j = 0;j < temp.length;j++)
				num[i][j] = Double.parseDouble(temp[j]);	//轉換為double陣列
		}
		
		for(int i = 0;i < num.length;i++)
		{
			for(int j = 0;j < num[i].length;j++)
			{
				System.out.print(num[i][j]+" ");
			}
			System.out.println();
		}
			
		
	}
}

執行結果貼圖:
在這裡插入圖片描述

(5)檢視幫助、編寫例子
利用System類中的arraycopy()方法複製陣列。
分別用Arrays類中的sort方法和binarySearch方法實現陣列的排序和折半查詢。

程式程式碼:

import java.util.Arrays;

public class text5 {
	public static void main (String args[]){
		
		int []a = {1,6,8,4,2,13,5,7,9,10};
		//輸出原陣列
		for(int i = 0;i < a.length;i++)
			System.out.print(a[i]+" ");
		
		//複製陣列並輸出
		int[] a1 = new int[a.length];
		System.arraycopy(a, 0, a1, 0, a.length);
		System.out.println("\n複製之後的陣列:");
		for(int i = 0;i < a1.length;i++)
			System.out.print(a1[i]+" ");
		
		//對陣列排序
		Arrays.sort(a1);
		System.out.println("\n排序之後的陣列:");
		for(int i = 0;i < a1.length;i++)
			System.out.print(a1[i]+" ");
	}
}

執行結果貼圖:

(6)隨機生成100個小寫字母,統計每個字母出現的次數,並顯示出來。
(利用Math.random()方法隨機產生)

程式程式碼:

public class test3_6 {
	public static void main(String []args){
		char []s = new char[100];
		char a = 'a';
		
		//隨機產生小寫字母
		for(int i = 0;i < 100;i++){
			s[i] = (char)( 'a' + Math.floor(Math.random()*('z'-'a'+1)) );
		}
		
		int []num = new int[26];
		//統計字母個數
		for(int i =0;i < 99;i++)
			num[s[i]-a] = num[s[i]-a] + 1;
		
		for(int i =0;i < 99;i++){
			System.out.print((char)(a+i) + " : " + num[i] + "  ");
			if(i%5==0)
				System.out.println();
		}
	}
}

執行結果貼圖:

在這裡插入圖片描述

(7)建立一個不規則的二維陣列如下,並在控制檯顯示,陣列如下
1 3 5
2 4 6 8
1 9 16 25 36
10 20 30
1 2 3 4 5 6

程式程式碼:

執行結果貼圖:

(8)編寫兩個過載的方法分別交換兩個整型變數,和整型陣列的第一個和第二個元素,執行並分析結果

程式程式碼:

class Num {
	int number;
	public Num(int number){
		this.number=number;
	}
}

public class test3_8 {
	public static void main(String []args){
		Num a = new Num(1);
		Num b = new Num(2);
		int []c = {3,4};
		System.out.println("交換前:");
		System.out.println("a=" + a.number + " " + "b=" + b.number);
		System.out.println("c[0]=" + c[0] + " " + "c[1]=" + c[1]);
		swap(a,b);
		swap(c);
		System.out.println("交換後:");
		System.out.println("a=" + a.number + " " + "b=" + b.number);
		System.out.println("c[0]=" + c[0] + " " + "c[1]=" + c[1]);
	}
	
	public static void swap(Num a,Num b){
		int temp = a.number;
		a.number = b.number;
		b.number = temp;
	}
	
	public static void swap(int []c){
		int t;
		t = c[0];
		c[0] = c[1];
		c[1] = t;
	}
}

執行結果貼圖:

在這裡插入圖片描述

相關文章