for (자료형 변수명 : 배열명) {
}
int []data = {10, 20, 30, 40, 50};
for (int n : data) {
System.out.println(n);
}
String []data = {"홍길동", "이순신", "유관순"};
for (String name : data) {
System.out.println(name);
}
int []a = new int[3]; //1차원 배열 [][][]
0 1 2
0[][][]
1[][][]
2[][][]
3[][][]
int [][]b = new int[4][3]; // 2차원 배열 4행3열
ex) [][]
[][][][]
[][][]
int [][]a = new int[3][];
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3];
[][][][][]
[][][][][]
[][][][][]
[][][][][]
[][][][][]
[][][][][]
int [][][]a = new int[2][3][5]; //3줄있고 5칸있는 면이 2장 있다.
int []a = new int[100]; //일반 배열은 이렇게 값을 지정해줘야만 했다.
ArrayList list = new ArrayList(); // 내가 데이터를 넣는 만큼 배열의 크기가 정해진다.
4행 5열의 2차원 배열을 생성하고 각 배열의 요소에 1부터 1씩 증가한 값을 저장하고 맨 마지막 열에는 각 행의 합을 누적하도록 하여 모든 배열의 요소를 출력한다.
public class ArrayPractice {
public static void main(String[] args) {
int[][] a = new int[4][5]; // 3행 4열의 2차원 배열 ==> 12개의 정수형 메모리가 잡힌다.
/*
0 1 2 3 4
0[1][2][3][4][10] a[0][4]
1[][][][][] a[1][4]
2[][][][][] a[2][4]
3[][][][][] a[3][4]
*/
// 중첩반복문을 이용하여 각 배열에 요소에 1부터 1씩 증가한 값을 저장해보자.
int n = 1;
for (int i = 0; i < 4; i++) { // 줄 수(행 수)
for (int j = 0; j < 4; j++) { // 열 수인데 마지막은 더해준 값을 저장하기 위하여 4까지만 설정해준다.
a[i][j] = n++;
a[i][4] += a[i][j];
}
}
// 모든 배열의 요소를 출력해보자.
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " \t"); // \t 탭설정하는 만큼 공백을 설정
}
System.out.println(); // 줄이 끝날 때마다 줄바꿈
}
}
}
5행 5열의 정수형 2차원 배열을 생성하고, 1부터 1씩 증가한 값을 차례대로 저장한다. 단, 각 맨 마지막 열에는 각 행의 합이 누적되도록 한다. 또, 맨 마지막 행에는 각 열의 합이 누적되도록 한다, 그리고, 맨 마지막 행, 열에는 모든 요소의 총 합이 누적되도록 한다.
public class MatrixSumTest {
public static void main(String[] args) {
int[][] a = new int[5][5];
int n = 1;
for (int i = 0; i < a.length - 1; i++) { // 행
for (int j = 0; j < a[0].length-1; j++) { // 열
a[i][j] = n++;
a[i][4] += a[i][j]; //마지막 열에는 각 행의 합을 누적
a[4][j] += a[i][j]; //마지막 행에는 각 열의 합을 누적
a[4][4] += a[i][j]; //맨 마지막 행, 열은 모두 요소의 합을 누적
}
}
//출력
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " \t"); // \t 탭설정하는 만큼 공백을 설정
}
System.out.println(); // 줄이 끝날 때마다 줄바꿈
}
}
}
/*
0 1 2 3 4
0[][][][][] [0][4]
1[][][][][] [1][4]
2[][][][][] [2][4]
3[][][][][] [3][4]
4[][][][][] [4][4]
[4][0]/[4][1]/[4][2]/[4][3]
*/
n을 매개변수로 전달받아 1에서 n까지의 합을 누적하여 반환하는 메소드를 만들고, 호출하기.
import java.util.Scanner;
public class MethodPractice02 {
public static int getSum(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
System.out.println("1부터 어디까지 출력할까요? ");
n = sc.nextInt();
System.out.println("1부터 " + n + "까지의 합은 " + getSum(n));
// int r = getSum(10);
//
// System.out.println("1부터 10까지의 합은: " + r);
// System.out.println("1에서 100까지의 합은: " + getSum(100));
}
}
학생의 이름배열과 점수배열을 매개변수로 전달받아 점수가 가장 높은 학생의 이름을 반환하는 메소드를 정의(단, 중복된 점수가 없다고 가정)
public class MethodTest08_Array {
public static String getScoreName(String[] name, int[] score) {
String max_name = "";
int max = score[0];
int idx = 0; // 인덱스가 궁금
for (int i = 1; i < score.length; i++) { // 점수가 가장 높은사람의 자리를 구하기
if (score[i] > max) {
max = score[i];
idx = i; // i를 인덱스에 담는다.
}
}
max_name = name[idx];
return max_name;
}
public static void main(String[] args) {
String[] name = { "유관순", "이순신", "홍길동", "김유신", "강감찬" };
int[] score = { 60, 70, 80, 100, 50 };
System.out.println("가장 높은 점수의 학생이름은: " + getScoreName(name, score));
}
}
4지 선다형 문항의 답안 10개를 입력받아 답이 옳은지 판별하여 맞으면 'O', 틀리면 'X'로 출력하고, 정답 수와 틀린 답 수를 각각 구하여 출력합니다. (단, 모범답안은 프로그램에서 미리 초기화 합니다.)
import java.util.Scanner;
public class Practice04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int []dap = {1,2,3,4,1,2,3,4,1,2}; //10개의 모범답안을 미리 생성
int []user = new int[10];
for(int i=0; i<user.length; i++) {
System.out.print((i+1) + "번 답을 입력하세요: ");
user[i] = sc.nextInt();
}
for (int i=1; i<=10; i++) { //문제를 출력
System.out.print(i + " "); //1~10번 문제를 출력
}
System.out.println(); //줄바꿈
int n = 0;//정답수를 위한 n을 선언
for(int i=0; i<10; i++) {
if(dap[i] == user[i]) { //배열에 있는 답과 user가 쓴 답이 같을 때
System.out.print("O "); //O을 출력
n++;
} else { //같지 않다면
System.out.print("X "); //x를 출력
}
}
System.out.println();
System.out.println("정답 수:" + n);
System.out.println("틀린답 수: " +(10-n));
}
}
다음과 같은 2차원 배열을 순회하면서 전체 요소 값을 화면에 출력하는 프로그램을 작성해라.
public class Practice130_14 {
public static void main(String[] args) {
int[][] a = { { 1, 2, 3 }, { 1, 2 }, { 1 }, { 1, 2, 3 } };
for(int i=0; i<a.length; i++) {
for(int j=0; j<a[i].length; j++) {
System.out.print(a[i][j] + " \t");
}
System.out.println(); // 줄이 끝날 때마다 줄바꿈
}
}
}