해결된 질문
작성
·
128
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
안녕하세요. 🙂
ClassStart5 클래스에서 향샹된 for문으로 만 사용하려고 하는데 Students s와 같은 변수를 담아둔다고 헀을 때 아래 코드처럼 해야 실행이되더라구요,
package class1;
public class ClassStart5 {
private static int i;
public static void main(String[] args) {
Student student1 = new Student(); // 학생을 담아둘 수 있는 변수를 선언
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
Student[] students = {student1, student2};
for (Student student : students) {
Student s= students[i];
System.out.println("이름: " + s.name+ " 나이: " + s.age + " 성적:" + s.grade);
}
}
}
다만 자꾸 컴파일 에러가 나서 확인해보니
위의 private static int i; 코드 때문인거 같은데 별도 선언을 해줘야하는 이유를 정확히 알수 있을까요?
s 변수에 담아두지 않고 아래처럼 해도 int i를 선언해야 하는 거 같습니다.
코딩자체가 입문이라 장황하게 문의드린 점 양해부탁드리며 답변 기다리겠습니다. 감사합니다!
Student[] students = {student1, student2};
for (Student student : students) {
System.out.println("이름: " + students[i].name+ " 나이: " + students[i].age + " 성적:" + students[i].grade);
답변 1
0
안녕하세요. 낯선개발자님, 공식 서포터즈 y2gcoder입니다.
먼저 향상된 for 문을 사용해서 ClassStart5의 코드를 고쳐보면 다음과 같습니다!
public class ClassStart5 {
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
Student[] students = {student1, student2};
for (Student student : students) {
System.out.println("이름:" + student.name + " 나이:" + student.age + " 성적:" + student.grade);
}
}
}
여기서 student를 다른 변수로 빼진 않아도 좋습니다 🙂 왜냐하면 향상된 for문을 사용하면서 이미 student라는 다른 변수로 선언했기 때문입니다.
제가 낯선개발자님의 의도를 잘 이해했는지 모르겠습니다!
students[i]로 하시려는 이유에 대해 조금 더 자세하게 설명해주시겠습니까? 적어주신대로만 하면 students[i]는 위의 students 배열을 가리키게 되는데, i값을 증가시켜주는 등의 동작을 하지 않으면 똑같은 값만 반복적으로 출력할 것 같기 때문입니다!
감사합니다.
안녕하세요. y2gcoder님 상세한 답변 감사합니다. Student[] students 자체에 i가 포함되는거 같은데 제가 향상된 for문을 잘 못 이해했던 거 같습니다 ㅎ,,
이미 향상된 for문을 통해서 student라는 변수를 선언한 점 이해했습니다. 감사합니다 🙂