3월 28일 내용정리
오늘도 배열복습 및 다차원 배열배움
package study_0328;
import java.util.Arrays;
public class study_0328 {
public static void main(String[] args) {
/* String str="홍길동";
* String str1="홍길동";
* String str2= new String("홍길동"); //String str2="홍길동"과 같은의미
* str ==str1 true, str과 str1이 참조하는 객체가 같은가?
* str ==str2 false, str2는 new연산자를 이용해 새로운 객체만들었기에
* str, str1,str2 가 참조하는 주소가 다르다(객체가 다르다)
* ==: 참조하는 주소가 같은가? 묻는것
* str.equals(str2) 값이 같은가를 물음 =>str.equals("홍길동")도 같은 의미
*
* String test1="홍길동";
* String test2="가나다";
* test1=test2; test1은 '홍길동'의 주소가 아닌 '가나다'의 주소를 참조한다.
*
*
* <배열>
* 1.하나의 배열에는 같은 타입의 데이터만 저장할 수 있다.
* 2.배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정
* 3.한번 생성된 배열은 그 배열이 실행되는 동안에는 길이를 늘이거나 줄일수 있다.
*
* 타입[]변수;
* su[]= {값1,값2...값n}//컴파일에러 공간확보에 대한 알림이 없었음
* int[]su={값1,값2...값n}
* int[]su= new int[]{값1,값2...값n}
*
* Arrays.toString(배열이름); 문자열 형태로 출력
*
*/
int[] arrExam=new int[3]; //4바이트(8비트)공간 3개 만듬
for(int i=0;i<arrExam.length;i++) {
arrExam[i]=i*10+10;
}
System.out.println(Arrays.toString(arrExam));
arrExam[2]=50; //값 하나만 변경하고 싶을때
System.out.println(Arrays.toString(arrExam));
double[]arrDouble=new double[3];
for(int i=0;i<arrDouble.length;i++) {
arrDouble[i]=i*10+10.3;
}
System.out.println(Arrays.toString(arrDouble));
String[]arrString = new String[3];
arrString[0]="홍길동"; //arrString[0]=new String("홍길동");
arrString[1]="김자바";
arrString[2]="이자바";
String[]arrString1= {"안녕","하세요","안녕하세요"};
/*
* 향상된 for문
* for(타입 변수명:배열 또는 컬렉션){ }
*
* 예)for(String str: arrString) {
System.out.println(str);
*
*/
for(String str: arrString) {
System.out.println(str);
}
}
}
1.다차원 배열
다차원 배열은 행과 열이 있다.
int [][] 변수명=new int[행의개수][열의개수];
int [][]num= new int[2][3]; [2]->행[3]->열
2.다차원 배열 선언과 값넣기
int[][]num= {{10,20,30},{40,50,60}};
3.for문을 이용하여 2차원배열 값넣기
for(int i=0; i<num.length;i++) { //행의 개수 (1차원 배열을 참조)
for(int j=0;j<num[i].length;j++) { //열의 개수 (2차원 배열의 [i]행의 열을 참조)
System.out.println("num["+i+"]["+j+"]="+num[i][j]);
}
}
아래는 쌤이 내준 문제, 마지막에 합계,평균, 각과목 합계 구하는게 어려웠으나 구함..힘들었따...ㅠ
package study_0328;
import java.util.Scanner;
public class study_0328_01 {
public static void main(String[] args) {
//3명학생의 국어,영어,수학 점수를 입력 받아서 3명 학생의 성적을 출력
/* int[][]jum=new int[3][3]; //점수받을 공간 int[][]jum=new int[학생수][과목개수];
* int num=10;
* int[][]jum=new int[num][3]; //이렇게 변수를 사용하여 공간개수를 지정해줄수 있음
*/
Scanner scan = new Scanner(System.in);
int[][]jum=new int[3][3];
int sum=0;
int sum1=0;
double avg=0.0;
double avg1=0.0;
for(int i=0;i<jum.length;i++) {
System.out.printf("%d번의 국어 점수를 입력하세요",+i+1);
jum[i][0]=scan.nextInt();
System.out.printf("%d번의 영어 점수를 입력하세요",+i+1);
jum[i][1]=scan.nextInt();
System.out.printf("%d번의 수학 점수를 입력하세요",+i+1);
jum[i][2]=scan.nextInt();
}
System.out.println("번호 국어 영어 수학 합계 평균");
System.out.println("=============================");
for(int i=0; i<jum.length;i++) {
sum=jum[i][0]+jum[i][1]+jum[i][2];
avg=sum/3.0;
System.out.printf("%2d %3d %3d %3d %3d %3.2f\n",i+1,jum[i][0],jum[i][1],jum[i][2],sum,avg);
}
System.out.println("=============================");
for(int i=0; i<jum.length;i++) {
sum1=jum[0][i]+jum[1][i]+jum[2][i];
avg1=sum/3.0;
System.out.printf(" "+" "+"%d",sum1);
}
}
}