배열에서 스택영역은 배열이름과 공간 그리고 그 공간에 힙영역 번지수를 저장하고
힙영역에는 해당 번지수에 배열 길이만큼의 공간과 데이터들을 저장한다.
배열 변수는 참조 변수 - 배열 생성되기 전 null로 초기화 가능
타입[] 변수 = null;
배열 변수가 null 값을 가진 상태에서 항목에 접근 불가
변수[인덱스]” 못함
NullPointerException 발생
5장 확인문제
- 4
p.143
참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null 값을 가질 수 있다. null 값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성된다. - 3
p.141
참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 쓰레기 수집기(Garbage Collector)를 실행시켜 쓰레기 객체를 힙 영역에서 자동으로 제거한다. - 2
p.146
문자열은 String 객체로 생성되고 변수는 String 객체를 참조한다.
p.142
참조 타입 변수들 간의 ==, != 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용된다. 참조 타입 변수의 값은 힙 영역의 객체 주소이므로 결국 주소 값을 비교하는 것이 된다.
p.147
동일한 String 객체이건 다른 String 객체이건 상관없이 문자열만을 비교할 때에는 String 객체의 equals() 메소드를 사용해야 한다. - 2
p.153
배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호를 사용한 배열 생성은 허용되지 않는다.
배열 변수를 미리 선언한 후, 값 목록들이 나중에 결정되는 상황이라면 다음과 같이 new 연산자를 사용해서 값 목록을 지정
변수 = new 타입[] {값1, 값2, 값3...}; - 3
p.156
boolean 타입 배열의 초기값: false
"난수정수"+i+"번째 ="
//향상된 for문이용하여 출력하기
System.out.println("--향상된 for문이용하여 출력--");
for(int val : s) {
//1.배열s에 접근
//2.배열s의 인덱스0에 위치한 값100을 변수val에 저장
System.out.println(val);
//3.변수val출력
//4.배열s에서 가져올 항목이 존재하면
//5.배열s의 인덱스1에 위치한 값 90을 변수val에 저장
//6.변수val출력
//7.배열s에서 가져올 항목이 존재하면
//8.배열s의 인덱스2에 위치한 값 85를 변수val에 저장
//9.변수val출력
//.....
}
/*[0]
*[1]
*[2]출력*/
for(int i=0;i<3;i++) {
//System.out.println("i가["+i+"]일때");
//0 1 2 3 4출력
for(int j=0;j<5;j++) {
System.out.print("["+i+"]["+j+"],");
}
System.out.println();//줄바꿔
}
package ch05;
/*배열(Array)이란?(교재 p149)
- 같은 타입의 데이터를 연속된 공간에 저장하는 자료구조
- 각 데이터 저장 위치는 인덱스 부여해 접근
*배열선언-primitive 타입
타입[] 변수명;
타입 변수명[];
*배열생성
1.변수명 = new 타입[길이]; new라는 연산자를 이용해서 배열선언 --> 타입에 따른 자동초기화 진행
2.변수명 = {값1, 값2,...값n};
3.변수명 = new 타입[]{값1, 값2,...값n}; 위에 두개 섞은 것. 주의. 1,2 섞어서 선언하는 방법은 []에 길이를 명시하지 않는다. 하지만 보통은 첫번째, 두번째 방식을 가장 많이 사용.
*타입에 따른 자동초기화(p156)
-char : '\u0000' -> 공백으로 자동초기화가 된다는 뜻.
-boolean : false
-정수 : byte, short, int -> 0
long -> 0L 리터럴 형변환(기본형이 int이기 때문에)
-실수 : float -> 0.0F(기본형이 double이라서)
double -> 0.0
-클래스[] : null
*배열에 접근 : Index를 이용
Index는 0부터 1씩 증가하는 형태
변수명[0] -> Index가 0인 요소에 접근 -> 예시 System.out.println(변수명[0])
변수명[1] -> Index가 1인 요소에 접근 -> 변수명[1]=100;
*/
public class ArrayEx01 {
public static void main(String[] args) { //메소드에 들어가는 변수는 매개변수
//배열선언-타입[] 변수명;
//배열생성-변수명={값1, 값2, ...값n};
int[] scores = {100, 90, 80, 50, 100}; // 하나만 실수가 들어갈 수 없다. 같은 타입의 데이터만 배열로 선언가능
System.out.println(scores); //-->이렇게 하면 배열 주소가 저장되어 출력된다. [I@15db9742 일반 변수에 글자가 보이는것은 그값으로 초기화된것이다. 배열은 다름.
//배열접근하여 출력 - 배열명[인덱스번호]
System.out.println("scores[0] : "+scores[0]); //100 출력. 인덱스 0에 내용 출력
System.out.println("scores[1] : "+scores[1]); //90 출력. 인덱스 1에 내용 출력
System.out.println("scores[2] : "+scores[2]); //80 출력. 인덱스 2에 내용 출력
System.out.println("scores[3] : "+scores[3]); //50 출력. 인덱스 3에 내용 출력
System.out.println("scores[4] : "+scores[4]); //100 출력. 인덱스 4에 내용 출력
System.out.println("----------------------------------------------------------------");
for(int i=0; i<=4; i++) {
System.out.println("scores["+i+"] : "+scores[i]); //변수는 문자열에 포함되면 문자열로 인식되어 그냥 i로 출력
}
scores[0]=99; //값을 바꿀수도 있다. index[0]인 요소에 값을 변경
System.out.println("----------------------------------------------------------------");
for(int i=0; i<scores.length; i++) {
System.out.println("scores["+i+"] : "+scores[i]); //변수는 문자열에 포함되면 문자열로 인식되어 그냥 i로 출력
}
}
}
package ch05;
//new 연산자로 배열을 생성(p155) -> 타입별로 자동초기화 확인하는 예제
/* *타입에 따른 자동초기화(p156)
-char : '\u0000' -> 공백으로 자동초기화가 된다는 뜻.
-boolean : false
-정수 : byte, short, int -> 0
long -> 0L 리터럴 형변환(기본형이 int이기 때문에)
-실수 : float -> 0.0F(기본형이 double이라서)
double -> 0.0
-클래스[] : null
*배열길이 : 배열명.length
*배열에 접근 : Index를 이용
Index는 0부터 1씩 증가하는 형태
변수명[0] -> Index가 0인 요소에 접근 -> 예시 System.out.println(변수명[0])
변수명[1] -> Index가 1인 요소에 접근 -> 변수명[1]=100;
*/
public class ArrayEx02 {
public static void main(String[] args) {
//타입[] 배열변수명[] 둘 다 되지만 보통은 타입뒤에 넣는 경우가 많다.
//타입[] 배열변수명 = new 타입[길이]; -> 자동초기화
//String 5개가 저장된 배열선언
String[] StringArr = new String[5];
int len2 = StringArr.length;
//배열길이 출력
System.out.println("StringArr의 길이 = "+len2);
//배열길이가 적용된 for문 이용하여 모든 값 출력
for(int i=0;i<len2;i++) {
System.out.println("StringArr["+i+"] = "+StringArr[i]);
}
System.out.println("-------------------------------------------------------------");
//실수타입 데이터 3개를 저장하기 위한 배열 변수선언
double[] doubleArr = new double[3]; //0.0 으로 자동초기화
float[] floatArr = new float[3]; //0.0 으로 자동초기화
//배열길이 출력-배열명.length
int len = doubleArr.length;
System.out.println("doubleArr의 길이 = "+len);//3
// System.out.println("doubleArr의 길이 = "+doubleArr.length);//3
System.out.println("floatArr의 길이 = "+floatArr.length);
//모든데이터를 출력
//for문 이용하여 값출력 - 인덱스가 0 1 2
//아래 for문은 위에서 배열의 길이를 len변수에 저장한 것을 활용
for(int i=0; i<len;i++) {
System.out.println("doubleArr["+i+"] = "+doubleArr[i]); //실수는 무조건 0.0으로 초기화
}
//아래 for문은 조건식에 배열의 길이(double.length)를 활용
// for(int i=0; i<doubleArr.length;i++) {
// System.out.println("doubleArr["+i+"] = "+doubleArr[i]); //실수는 무조건 0.0으로 초기화
// }
for(int i=0; i<floatArr.length;i++) {
System.out.println("floatArr["+i+"] = "+floatArr[i]); //실수는 무조건 0.0으로 초기화
}
System.out.println("-------------------------------------------------------------");
//long타입 데이터 3개를 저장하기 위한 배열 longArr변수선언
long[] longArr = new long[3]; //0로 자동초기화 실제로 0인데 L으로 형변환되어 0L인데 0으로 표시되는것이 맞다.
//배열길이 출력
System.out.println("longArr의 길이 = "+longArr.length);
//모든데이터를 출력
for(int i=0; i<longArr.length;i++) {
System.out.println("longArr["+i+"] = "+longArr[i]); //정수는 무조건 0으로 초기화
}
System.out.println("-------------------------------------------------------------");
//boolean타입 데이터 3개를 저장하기 위한 배열 booleanArr변수선언
boolean[] booleanArr = new boolean[3]; //false로 자동초기화
//배열길이 출력
System.out.println("booleanArr의 길이 ="+booleanArr.length);
//배열안의 특정인덱스에 위치한 요소에 접근 : 배열명[인덱스번호]
System.out.println("booleanArr[0] = "+booleanArr[0]);
System.out.println("booleanArr[1] = "+booleanArr[1]);
System.out.println("booleanArr[2] = "+booleanArr[2]);
// System.out.println("booleanArr[3] = "+booleanArr[3]); // 이건 에러 발생. 배열 범위 넘어간 것 출력이기 때문에
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
//배열길이가 3인 배열을 생성하였고
//따라서 인덱스 번호는 [0], [1], [2]만 존재하는데
//인덱스3인 [3]인 요소에 접근하라고 하니 문제가 발생하였다라는 의미.
//ArrayIndexOutOfBoundsException 은 인덱스 범위를 벗어났음을 의미
//-->해결방법 : 인덱스 번호 확인
//0번째 위치한 요소의 값을 true로 변경
booleanArr[0] = true;
//출력
System.out.println("값이 수정된 booleanArr[0] = "+booleanArr[0]);
System.out.println("-------------------------------------------------------------");
//char타입의 데이터 3개를 저장하기 위한 배열 charArr변수선언&초기화
char[] charArr = new char[3]; //-->char 주소지가 공백으로 3칸 나와버린다 (자동초기화)... 앞에 글씨를 써야 주소지 표시됨.
// System.out.println("ㅁㄴㅇㅁㄴㅇㅁㄴㅇ"+charArr); 이런식으로
//int[] charArr = new int[3]; //-->int는 출력된다.
System.out.println("charArr의 길이 ="+charArr.length);
for (int i=0; i<charArr.length; i++) {
System.out.println("charArr["+i+"] = "+charArr[i]); //공백으로 자동 초기화
}
}
}
package ch05;
/* 배열생성
1.변수명 = new 타입[길이]; new라는 연산자를 이용해서 배열선언 --> 타입에 따른 자동초기화 진행
2.변수명 = {값1, 값2,...값n};
3.변수명 = new 타입[]{값1, 값2,...값n}; 위에 두개 섞은 것. 주의. 1,2 섞어서 선언하는 방법은 []에 길이를 명시하지 않는다. 하지만 보통은 첫번째, 두번째 방식을 가장 많이 사용.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
교재 154p add메소드를 이용한 두번쨰 소스가 훨씬 좋은 소스이고 이런식으로 소스를 짜야한다.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★/
public class ArrayEx03 {
public static void main(String[] args) {
//값을 할당하면서 배열생성
//시험점수 5개를 저장한 배열을 생성하고, 값출력 (둘 다 가능)
int[] s = new int[] {100, 90, 85, 90, 100};
int[] scores = {100, 90, 85, 90, 100};
//향상된 for문 이용하여 점수 출력하기
System.out.println("--향상된 for문 이용하여 출력--");
//향상된 for문, 포문안에 실행 문이 있을때 배열은 그냥 회수 지정을 하지만 단순 출력같은 동작일때는 비교하는 배열 값을 저장하여 출력
for(int temp : scores) {
/*1. 배열 scores에 접근
*2. 배열 s의 인덱스0에 위치한 값 100을 변수 temp에 저장 */
System.out.println(temp);
//3. 변수 temp출력
//4. 배열 scores에서 가져올 항목(요소, 아이템)이 존재하면
//5. 다시 배열 scores의 하나증가된 인덱스 1에 위치한 값 90을 변수 temp에 저장
//6. 변수 temp출력
//7. 배열scores 에서 가져올 항목이 존재하면
//8. 배열scores의 하나증가된 인덱스 2에 위치한 값 85를 변수 temp에 저장
//9. 변수 temp출력
//......
}
System.out.println("------------------------------------------------------");
//값 출력
for (int i=0; i<scores.length;i++) {
System.out.println("scores["+i+"] = "+scores[i]);
}
//그냥 계산기 계산 -->>> 총합 : 465 //평균:93
int n0=100; int n1=90; int n2=85; int n3=90; int n4=100;
int sum=0;//총합
sum=n0+n1+n2+n3+n4;
double avg = 0.0; //평균
avg=sum/5;
System.out.println("점수 총합 : "+sum);
System.out.println("점수 평균 : "+avg);
System.out.println("-----------------------------------------------------------");
//for문 계산 강사님 짬 --->>> 총점, 평균
int sum1 = 0;//총합을 저장하기 위한 변수선언 및 초기화
for(int i=0; i<scores.length;i++) {
sum1=sum1+scores[i];
//sum1=sum1+scores[0]; //0+100의 결과를 sum1에 저장
//100+90 100+scores[1]의 결과를 sum1에 저장
//190+85 190+scores[2]의 결과를 sum1에 저장
//275+90 275+scores[3]의 결과를 sum1에 저장
//365+100 365+scores[4]의 결과를 sum1에 저장
//sum1에는 465가 저장
}
System.out.println("점수 총합 = "+sum1);
System.out.println("점수 평균 = "+(double)(sum1/scores.length));
System.out.println("-----------------------------------------------------------");
//for문 계산 내가 짬 --->>> 총점, 평균
int sum2 = 0;
double avg2 = 0.0;
for (int i=0; i<scores.length;i++) {
sum2+= scores[i];
// sum2=sum2+scores[i]; 위와 동일
}
avg2=sum2/scores.length;
System.out.println("점수 총합 : "+sum2);
System.out.println("점수 평균 : "+avg2);
// sum = sum + scores[i]; sum+=scores[i]; sum=scores[i]
System.out.println("-----------------------------------------------------------");
//"펭귄", "강아지", "낙타"
//String[] animals = new String[10] {"펭귄", "강아지", "낙타"}; //배열초기 값을 넣었을때는 배열길이를 정의할 수 없다.
//주의.[길이]를 작성하지 않는다.
//해결방법 : 초기화값의 개수를 제시하지 않는다. 즉 배열 길이를 제거
//Cannot define dimension expressions when an array initializer is provided
//아래코드 사용가능
String[] animal = new String[] {"펭귄", "강아지", "낙타"};
String[] animals = {"펭귄", "강아지", "낙타"}; //이런방식으로 도 가능
//배열길이-배열명.length
System.out.println("animals 배열의 길이는 = "+animals.length);
for (int i=0; i<animals.length;i++) {
System.out.println("animals["+i+"]:"+animals[i]);
}
}
}
package ch05;
import java.util.Scanner;
public class ArrayQuiz {
public static void main(String[] args) {
//Math.random(): 0.0이상 1.0미만의 난수구하기
double nan=(Math.random()*100)+1;
System.out.println("난수실수 = "+nan);
System.out.println("------------------------------------------------------");
// //start이상~(start+n)범위에 속하는 정수얻기(p536)
//아래랑 같은 형식
// //(int)(Math.random()*n)+start
//아래랑 같은 형식
//1~100 사이의 1개의 난수를 구하기
int nan1=(int)(Math.random()*100)+1;
System.out.println("난수정수 = "+nan1);
System.out.println("------------------------------------------------------");
//1~100 사이의 5개의 난수를 구하기
int nan2;
for(int i=0 ; i<5; i++) {
nan2=(int)(Math.random()*100)+1;
System.out.println("난수정수"+i+"번째 ="+nan2);
}
System.out.println("------------------------------------------------------");
//정수 5개를 저장하기 위한 배열 생성 및 출력
int b = 5; //--> 이렇게 할거면 스캐너써서 입력받는것이 효율적
int[] intArr = new int[b]; //길이 저장
for(int i=0 ; i<5; i++) {
System.out.println("intArr["+i+"] = "+intArr[i]);
}
System.out.println("------------------------------------------------------");
//1~100 사이의 5개의 난수를 배열에 저장하여 출력하세요.
for(int i=0; i<intArr.length; i++) {//5번 반복
int r1 = (int)(Math.random()*100)+1; //double형을 int형으로 강제 형변환
intArr[i]=r1;
System.out.println("난수정수"+i+"번째 ="+intArr[i]);
}
//입력 -> 작업 -> 출력 순으로 프로세스가 진행
//난수 5개 출력 (강사님 소스)
int nums=0;
for(int i=0; i<5; i++) { //5번 반복
nums = (int)(Math.random()*100)+1;
System.out.println(nums);
// System.out.println((int)(Math.random()*100)+1);
}
System.out.println("------------------------------------------------------");
//난수 5개 출력에 배열사용 (강사님 소스)
//코드구현1>
int[] nums2=new int[5];
for(int i=0; i<nums2.length; i++) { //5번 반복
nums2[i] = (int)(Math.random()*100)+1;
System.out.println(nums2[i]);
// System.out.println((int)(Math.random()*100)+1);
}
System.out.println("------------------------------------------------------");
//체계적으로 나눠 코딩하기.(강사님 소스)
//코드구현2> 절차를 나누어서 진행하는 형태. 수정해서 작업하기가 수월하다. 향수 메서드로 변경할 수 있고
//선언
int[] nums3=new int[5];
//입력 & 작업
for(int i=0; i<nums3.length;i++) {
nums3[i] = (int)(Math.random()*100)+1;
}
//출력 --> 출력하는 메소드만 따로
for(int i=0; i<nums3.length;i++) {
System.out.println(nums3[i]);
}
System.out.println("------------------------------------------------------");
//향상된 for문을 이용하여 배열안의 값을 출력
//배열이나 컬렉션에 value가 존재하는 동안만 반복해서 실행
/*실행순서
* 1. 배열명 또는 컬렉션명
* 2. 데이터타입 변수명
* 배열(또는 컬렉션)에서 value를 하나씩 꺼내어
* 변수에 저장한다.
* 3. for {} 블럭안의 코드를 반복실행
*/
int[] nArr=new int[5]; //0 0 0 0 0 향상된 for문, 이 포문에서는 배열은 그냥 회수 지정
for(int temp : nArr) {
temp = (int)(Math.random()*100)+1; //만약 난수 메소드가 없으면 그냥 배열에 있는 값 찍어버린다.★★★★★★★★★★★★★★★
System.out.println(temp);
}
System.out.println("------------------------------------------------------");
//정수 5개 입력받기
Scanner sc = new Scanner(System.in);
System.out.println("숫자입력하세요");
int inInt = sc.nextInt();
int[] ik = new int[inInt];
for(int i=0 ; i<ik.length; i++) {
ik[i] = (int)(Math.random()*100)+1;
System.out.println("ik["+i+"] = "+ik[i]);
}
}
}
package ch0304;
import java.util.Scanner;// java.util패키지 안의 Scanner클래스를 import하겠다 라는 뜻.
//논리 연산자(교재p91
)
/*논리 연산자 (&&, ||, &, |, ^, !) (p.91
93)
-논리곱(&&), 논리합(||), 배타적 논리합(^) ,논리 부정(!) 연산 수행
-피연산자는 boolean 타입만 사용 가능
*기본타입 8가지(p38) -->괄호안에 숫자는 byte
*-char(2) : ''
-정수:byte(1) < short(2) < int(4, 기본) < long(8)
-실수:float(4), double(8, 기본)
-논리형:boolean : true, false
if(조건1) {
//조건1 만족시 실행코드
}else if (조건n){
//조건 n만족시 실행코드
}else{
// 모든 조건x 실행코드
}
*/
public class Ex03_logicalOp_p92 {
public static void main(String[] args) {
String strCode="A"; //문자열은 한글자이상
//p130 5~14라인에서 사용
//Scanner 클래스의 객체를 이용하여 콘솔을 통해 user로 부터 문자열을 입력 받기
//문법> 타입 참조변수명=new 클래스명(참조변수)
//new Scanner(System.in)는 Scanner클래스의 객체를 생성한다.
/*Scanner sc = 는
* 생성된 Scanner클래스의 객체를 참조 sc변수에 저장한다.*/
/* sc.nextLine()는
* 참조변수sc를 통해 Scanner클래스의
* nextLine()메서드를 호출하여 실행한다.
* enter단위로 읽는다*/
/*String inputString = 는
* user로 부터 콘솔로 입력받은 문자열을
* String타입 inputString변수에 저장한다.*/
Scanner sc = new Scanner(System.in); //sc. 해보면 스캐너 클래스에서 사용할 수 있는 기능들을 모두 사용 할 수 있다. 교재 130 참조
System.out.println("숫자입력하세요");
// int inputInt = sc.nextInt(); //정수로 읽어들이기
// System.out.println("inputInt="+inputInt);
double inputDouble = sc.nextDouble(); //double(실수)로 읽어들이기
System.out.println("inputDouble="+inputDouble);
System.out.println("------------------------------");
// System.out.println("내용을 입력하세요");
// System.out.print(">");
// String inputString = sc.nextLine(); //문자열로 읽어들이기
// System.out.println("inputString="+inputString);
// System.out.println("==================================");
//
//char타입 charCode변수에 'A'초기화
char code='A';
System.out.println("code="+code);//A
//int타입 charCode변수에 'A'초기화
int charCode='0';
code=(char)charCode; //강제 형변환
//int타입 charCode변수안의 값을 강제로(????)타입으로 변환하여
//char타입 code변수에 저장
System.out.println("charCode="+charCode);//65
System.out.println("(char)charCode="+code);//A
//charCode변수에 저장된 값에 따라 대문자, 소문자, 0~9 숫자로 출력
if(charCode>=65 & charCode<=90) { //65이상이면서 90이하라면
System.out.println("대문자");
}
if(charCode>=97 && charCode<=122) { //97이상이면서 122이하라면
System.out.println("소문자");
}
// if(!(charCode<48) && !(charCode>57)) { 책 내용==>48미만이 아니면서 57초과가 아니라면
// System.out.println("소문자");
if(charCode>=48 && charCode<=57) { //48이상이면서 57이하라면
System.out.println("0~9 숫자 이군요");
}
}
}
package ch05;
/*다차원 배열 (교재 p162~)
- 2차원 배열 이상의 배열
- 수학의 행렬과 같은 자료 구조
1.변수명 = new 타입[길이]; new라는 연산자를 이용해서 배열선언 --> 타입에 따른 자동초기화 진행
2.변수명 = {값1, 값2,...값n};
3.변수명 = new 타입[]{값1, 값2,...값n}; 위에 두개 섞은 것. --->해당 예제는 이 방식을 사용
*/
/*줄=행=row
*칸=열=column
교재 164p~165p
*/
public class ArrayEx04_p162 {
public static void main(String[] args) {
int[][] scores= {
//[0][0], [0][1], [0][2], [0][3], [0][4]
{100, 95, 94, 93, 91}, //학생1의 5과목 점수
//[1][0], [1][1], [1][2], [1][3], [1][4]
{80, 81, 82, 93, 84}, //학생2의 5과목 점수
//[2][0], [2][1], [2][2], [2][3], [2][4]
{70, 71, 72, 73, 74} //학생3의 5과목 점수
};
//이건 내 코드 i 및 j 의 조건문 길이를 바꿔줄것 아래
// for(int i=0; i<3;i++) { //0, 1, 2 출력 for문 (행 출력)
// for(int j=0; j<5;j++) { //0, 1, 2, 3, 4 출력 for문 (열 출력)
// System.out.println("학생"+(i+1)+"의 다섯과목 중 "+(j+1)+"번째 과목 점수는 = "+ scores[i][j]);
// }
// System.out.println("-------------------------------------");
// }
//
//내가 한 것.
for(int i=0; i<scores.length;i++) { //0, 1, 2 출력 for문 (행 출력)
for(int j=0; j<scores[0].length;j++) { //0, 1, 2, 3, 4 출력 for문 (열 출력)
System.out.println("학생"+(i+1)+"의 다섯과목 중 "+(j+1)+"번째 과목 점수는 = "+ scores[i][j]);
}
System.out.println("-------------------------------------");
}
//아래는 따로 출력. 강사님 코드
// /[0]
// *[1]
// *[2]출력/
// for(int i=0; i<3;i++) { //0, 1, 2 출력 for문 (행 출력)
// System.out.println("["+i+"]");
// }
//
// //0 1 2 3 4 출력
// for(int j=0; j<5;j++) { //0, 1, 2, 3, 4 출력 for문 (열 출력)
// System.out.print("["+j+"], ");
// }
System.out.println("-------------------------------------");
//같이 출력. 강사님 코드
for(int i=0; i<3;i++) { //0, 1, 2 출력 for문 (행 출력)
//System.out.println("i가["+i+"]일때");
for(int j=0; j<5;j++) { //0, 1, 2, 3, 4 출력 for문 (열 출력)
//System.out.print("scores["+i+"]["+j+"], ");
System.out.print(scores[i][j]+", "); //순수한 배열로 표현!!!!!!!!!!!!!!!!★★★★★★★★★★
}
System.out.println(); //줄바꿔
}
//0 1 2 3 4 출력
System.out.println("-------------------------------------");
// int[] stu1 = {100,95,94,93,91}; //학생1의 5과목 점수
// int[] stu2 = {80,81,82,93,84}; //학생2의 5과목 점수
// int[] stu3 = {70,71,72,73,74}; //학생3의 5과목 점수
System.out.println(); //빈줄
System.out.println("===================================");
//5과목의 점수를 저장하는 배열을 생성, 출력
int[] stu1 = {100, 95, 94, 93, 91}; //학생1의 5과목 시험점수
for(int i=0; i<stu1.length; i++) { //stu1.length=5
//System.out.print(stu1[i]+"\t");
System.out.print(stu1[i]+" ");
}
}
}
'java' 카테고리의 다른 글
22.11.03 클래스 인스턴스화 심화 (0) | 2023.02.12 |
---|---|
22.11.02 다차원 배열, 클래스 객체화를 위한 설계 (0) | 2023.02.12 |
22.10.31 논리연산자, 증감연산자, 다중for문, 배열, ==, equals. (0) | 2023.02.12 |
22.10.28 for, do-while, break, switch, 삼항연산자 (0) | 2023.02.12 |
22.10.27 변수 타입(크기), 반복문 (0) | 2023.02.12 |