java

Java/What is Array/Exercise/배열기초

MyaZ 2020. 1. 27. 17:03

We can assign 3 int type numbers like this but this is too inefficient and repeated.

	int k1 = 99, k2 = 98, k3 = 80;
		int sum = 0;
		float avg = 0f;

		sum = k1 + k2 + k3; 
		avg = (float) sum / 3;
		
		System.out.printf("total score:%d, avg score:%.2f", sum, avg);

 

So we declaire 'array' like below and assign same type of variables at once.

int[] kor = {99,98,80}; 
		//int 
		int sum = 0;
		float avg = 0f;

		sum = kor[0] + kor[1] + kor[2]; 
		avg = (float) sum / 3;
		
		System.out.printf("total score:%d, avg score:%.2f", sum, avg);​

 

ex1

declaire 700 arrays, assign random number from 1 to 100 and get total and avg scores. 

	Random rd = new Random();
		int[] kor = new int[700];
		int sum = 0;
		float avg = 0f;
		//for(int i=0;i<700;i++)
		for(int i=0;i<kor.length;i++)
			kor[i] = rd.nextInt(101);
		for(int i=0;i<kor.length;i++)
			sum += kor[i];
		avg = (float)sum/kor.length;
		System.out.printf("total score: %d, avg score: %.2f",
				sum, avg);

 

ex2 

declaire 10 arrays, assign number from 1 to 10 and get sum. 

int[] num = new int[10];
		for (int i = 1; i <= 10; i++)
			num[i - 1] = i;
		int sum = 0;
		for (int i = 0; i < num.length; i++) {
			System.out.print(num[i] + ",");
			sum += num[i];
		}
		System.out.println("\ntotal is" + sum);

 

ex3

get length of the array

int [] arr = {10,20,30};
		System.out.println("길이는" + arr.length);
		//java.lang.ArrayIndexOutOfBoundsException
		//배열은 시작은 0, 마지막은 배열길이 -1
		System.out.println(arr[arr.length-1]);
	//System.out.println(arr[3]);	//Exception

 

ex4

difference between (arr) and (arr[index])

//int[] arr = { 10, 20, 30 };
		
		//스택에는 참조변수,힙에는 실체 배열객체
		int[] arr = new int[3];
		arr[0]=10;
		arr[1]=20;
		arr[2]=30;
		System.out.println(arr);// 배열참조값(레퍼런스값)
		
		//참조변수(얕은복사)
		int[] arr1 = arr;
		int[] arr2= arr;
		System.out.println(arr1);
		System.out.println(arr2);
		
		arr1[1]=100;
		System.out.println(arr[1]);
		System.out.println(arr2[1]);
[I@15db9742
[I@15db9742
[I@15db9742// (arr) printed references
100
100

 

ex5

declaire 10 arrays, assign multiples of 3 and print in descending order.

int[] num = new int[10];

		for (int i = 0; i < num.length; i++) {
			num[i] = (i + 1) * 3;
		}
		         //최대값 수기준이아니라 int배열의기준
		for (int i = 9; 0 <= i; i--) {
			System.out.print(num[i] + " ");
		}

 

ex6

declaire 10 arrays, get 10 random numbers from users and get sum.

Scanner sc = new Scanner(System.in);
		int[] nums = new int[10];
		int result = 0;

		for (int i = 0; i < nums.length; i++) {
			System.out.println("type number: ");
			nums[i] = sc.nextInt();
			result += nums[i];
		}
		System.out.println("sum: " + result);
		sc.close();

 

ex7

declaire 10 arrays, assign number from 1 to 10 and print only odd numbers.

int[] nums = new int[10];
		for (int i = 1; i <= 10; i++) {
			nums[i - 1] = i;
			if (i % 2 != 0)
				System.out.println(nums[i - 1]);

		}

 

ex8

declaire 10 arrays, get 10 random numbers from users, assign in arrays and print only multiples of 3 or 2.

Scanner sc = new Scanner(System.in);
		int[] nums = new int[10];

		for (int i = 0; i < nums.length; i++) {
			System.out.println(i+1 +". type number: ");
			nums[i] = sc.nextInt();
		}

		for (int i = 0; i < nums.length; i++) {
			if ((nums[i] % 2 == 0) || (nums[i] % 3 == 0))
				System.out.println("multiples of 3 or 2:" + nums[i]);
		}
		sc.close();

 

ex9

declaire 20 arrays and assign random number from 1 to 100.

print all numbers but backward when index of the arrays are even nubers.

Random rd = new Random();
		int[] num = new int[20];

		for (int i = 0; i < num.length; i++) {
			num[i] = rd.nextInt(101);
			System.out.println((i + 1) + ": " + num[i]);
			
		}
		System.out.println();

		for (int i = 0; i < num.length; i++) {
			if (i % 2 == 0) {///칸의의미야 수의 의미가아니라
				System.out.println("홀수" + (i + 1) + "번째: " + num[i]);
			}
		}
		System.out.println();

		for (int i = num.length - 1; i >= 0; i--) {
			if (i % 2 != 0)
				System.out.println("짝수" + (i + 1) + "번째: " + num[i]);
		}
		System.out.println();