Java/What is Array/Exercise/배열기초
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();