2012-12-07 2 views
2

안녕 얘들 아 빠른 질문. 자바 메뉴를 만드는 것은 코드 예제입니다. "if"문에서 2 개의 배열을 설정하면 이러한 배열을 다시 참조 할 수 있는지 궁금합니다. 나는 범위 때문에 배열이 if 문에서 벗어 났을 때 파괴된다는 것을 안다. 옵션 P가 선택되면 배열을 다시 참조하려고합니다.범위/메뉴 외부의 배열을 참조하는 방법은 무엇입니까?

public static void determineOption (char option) { 

     if (option == 'A') { 

     int class_number = Console.getInt("Enter how many students between 1-10"); 

     while (class_number < 1 || class_number > 10) 
     class_number = Console.getInt("Enter how many students between 1-10"); 

     System.out.println(""); 


     String[] name = new String[class_number]; 
     int[] score = new int[name.length]; 

     for (int i=0; i<class_number; i=i+1) 
     { 
      name[i] = Console.getString("Enter Name"); 
      score[i] = Console.getInt("Enter score"); 
     } 

     } 
     else if (option == 'P') { 


     } 
+2

배열 참조를'if' 외부에 선언하고 내부에서 초기화하십시오. 기억하지 말고 배열을 바깥에 기본값으로 초기화해야합니다. –

+0

음. 잠깐, 조금 더 얘기해야합니다. 왜냐하면 배열이'if'에서 초기화 될 때'else if'가 실행되지 않기 때문입니다. 그래서, 'else if'에서 생성 된 배열에 접근 할 필요가 없습니다. 배열은'if'에서 어떻게 생성하는지 독립적으로 생성 될 것입니다. –

답변

1

논리에 따르면 HashMap이 적합하다고 보입니다.

HashMap<String,Integer> 

키는 이름이고 값은 점수입니다. 이것을 클래스 변수로 정의 할 수 있고 else if의 경우에 둘 다 사용할 수 있습니다.

0

선언문을 범위에서 더 높게 (필요한 경우) 클래스에 배치하십시오. 즉, 메소드의 로컬 변수가 클래스의 변수가되도록 배열을 변경합니다.

0

if 외부의 해당 배열을 선언하고 필요한 경우 초기화하십시오.

0

모든 문제가 있습니다. if 문 외부의 배열을 메서드 자체의 범위에 넣으십시오. 그러면 메서드 전체에서 사용할 수 있습니다 (선언 선에서 메서드 끝까지). 다양한 방법 중에서 배열을 사용해야하는 경우 클래스 필드로 만들면 배열을 좀 더 길게 유지해야 할 것입니다.

배열의 초기화가 다른 조건에 달려있는 경우 언제든지 초기화하지 않았을 수 있으므로 사용하기 전에 먼저 확인해야합니다.

관련 문제