2011-12-09 5 views
0

나는 (초보자는 무엇인가) 다소 복잡한 과제를 수행하고 있습니다. 나는 그것의 jist를 가지고 있다고 생각하지만 월요일 - 일요일이 대화 상자에 입력 된 후 "null"을 인쇄하는 데 문제가 있습니다. 또한 할당의 목표는 나중에 사용자가 숫자 0-6을 입력 한 다음 메서드에 설정된 String [] weekArray에서 해당 요일을 인쇄하는 것입니다. 나는이 일을하는 법을 잘 모르겠고 내 책은 나를 보여주고있는 것처럼 보이지 않지만 내 코드가 설정된 방식으로 할 수있을 것인가? 감사합니다. 여기에 코드가 있습니다.이 메소드가 null를 돌려주는 이유는 무엇입니까? (배열에서 문자열 집합 호출)

EDIT - 메소드에서 배열을 반환하는 예제가 내 책에 있습니다. 다른 목표를 갖고있는 것처럼 내 과제에 적용 할 수 있는지 확실하지 않지만 여기에 있습니다 ..

EDIT # 2 - 내가하는 일에 대한 지침.

EDIT # 3 - 배열에 메서드를 전달하는 예제에 대한 필자의 해석.

EDIT # 4 - 문제가 해결되었습니다. 나는 그것을 많이 잘못 생각하고 있었다. 이 책의 예는별로 도움이되지 않았습니다. 대답 한 당신 덕분에. 교수님 (내년 학기에 자신의 과제를 좋아하지 않을 것임)을 고려하여 과제물 설명을 삭제했습니다.

아래 코드의 발췌 부분 ...이 방법이 더 복잡해졌습니다.

public static String[] getWeek() { 
    String[] weekArray = new String[7]; 
for (int i = 0; i < weekArray.length; i++) { 
    weekArray[0] = JOptionPane.showInputDialog("Enter 'Monday'. "); 
    if (weekArray[0].compareTo("Monday") > 0) { 
     weekArray[0] = JOptionPane.showInputDialog("Enter 'Monday'. "); 
+0

금요일은 어디에 있습니까? Rebbeca Black은 연기가 난다 .... – st0le

+0

하하, 실제로 숙제가 아니었다. 우연히 실수로 버려진 것 같지만, 처음에는 그것을 포함시키지 않았다. 우리가 돌아 다니는 속임수. 일단 배열에서 메서드를 전달한 후 while 루프에 도착하면 "금요일"없이 원하는 것을 수행 할 수있는 방법이 없다는 것을 깨달았습니다. 그래도 고마워. – user1082706

답변

2

귀하의 지점에 도달 할 수없는 문이 -

가입일
weekArray[5] = ... 
while(weekArray[5].equalsIgnoreCase(null)) { 
    // Cannot reach this point as equalsIgnoreCase(null) always returns false. 
} 

:

진정한 인수 null이 아니고 문자열이 대소 동일한 경우; 그렇지 않으면 false.

강조 광산.

편집 : 위의 편집에서 배열을 채우는 데 문제가있는 것으로 보입니다. 거친 아이디어는 :

public static void main(String[] args) { 
    // Just an example 
    int[] values = new int[5]; 
    System.out.println(Arrays.toString(values)); 

    populateArray(values); 
    System.out.println(Arrays.toString(values)); 
} 

private static void populateArray(int[] toBePopulated) { 
    toBePopulated[0] = 42; 
    toBePopulated[1] = 11; 
    // Etc. Again, just an example. 
} 

이 인쇄됩니다

[0, 0, 0, 0, 0]

[42, 11, 0, 0, 0]

아이디어 어떤 방법 populateArray에 전달하면에 대한 참조이다 메모리에있는 배열의 위치. 즉, 배열의 내용을 조작 할 수 있으며 변경 사항은 나중에 values에 반영됩니다.

+0

아 나는 고마워. 그게 문제가 될지도 모른다고 생각 했어. 내가 null로 설정하는 유일한 이유는 while 문이 없기 때문에 프로그램이 처음 응답을 입력 한 후 실행을 멈춘다는 것입니다. while 문을 꺼내 다른 방법을 찾거나 while 문을 변경해야합니까? – user1082706

+0

당신은 null로 설정하지 않는다. * null과 비교한다. 이것을 null로 설정하면'weekArray [5] = null;'처럼 보일 것입니다. 또한 프로그램 흐름을 기록해 두십시오.'return'은'getWeek' 메소드의 나머지 부분을 바로 가기로 만들고'main'으로 돌아가서 첫 번째 응답 후에 실행을 멈추게 할 것입니다. – Bringer128

+0

오케이. 나는 그것에 대해 좀 더 연구하고 돌아올거야. 감사. – user1082706

0

내가 바로 그것을 가지고 있는지 알고 있지만 피상적 인 모습에서, 그것은 STH 같이해야한다 생각 당신이 일요일 부분을 착각있어 보인다하지 않습니다

if (weekArray[5].equalsIgnoreCase("Sunday")) // Note the "5" 
+0

잘 내 부분에 오류가 있었고 그것을 잡는 주셔서 감사합니다, 그것은 null 문제를 일으키는 것으로 보이지 않습니다. – user1082706

0

문자열이 null 인 당신의 뺨은 아마도 당신이 원하는 것이 아닙니다. 코드를 들여 쓰기 만하면 더 쉽게 볼 수 있습니다.이 포맷 후

는 [0] weekArray가 null의 경우, 당신은 확인, 그래서

while (weekArray[0].equalsIgnoreCase(null)) { 
     if (weekArray[0].equalsIgnoreCase("Monday")) 
      return weekArray[0]; 
    } 

이 무엇 널 equalsIgnoreCase ("월요일")의 경우. 이 논리는 당신이 원하는 것이 아닙니다.

모든 요행을 묻고 확인한 후 null을 반환합니다 (메서드가 끝나면). 이 si는 인쇄되고 있습니다.

+0

감사합니다. 나는 아직도이 일을하고있다. 더 이상 궁금한 점이 있으면 알려 드리겠습니다. 여기에 무엇을해야할지 모르겠습니다. – user1082706

관련 문제