2014-01-24 2 views
0

그래서이 방법의 핵심은 100 이상의 온도 배열을 얻는 것입니다. 무엇이 문제입니까? 내 toString에서 이것을 반환하면 blazing []이 존재하지 않는다고 말합니다.잘못된 논리

public int[] above100Degrees() 
    { 
     int[] blazing = new int[temps.length]; 
     for(int i = 0; i < temps.length; i++) 
     { 
     if(temps[i] > 100) 
     { 
      blazing[i] = temps[i]; 
     } 
     } 
     return blazing; 
    } 

toString 메소드 :

public String toString() 
    { 
     String returnString = "The temperature forecast of week " + WEEK + " is logged in as: "; 
     for(int i = 0; i < temps.length; i++) 
     { 
      returnString += "\t" + temps[i] + "\t"; 
     } 
     returnString += "\n" + "The number of temperatures below freezing is " + getUnderFreeze() + "." + "\n" + 
          "The largest difference this week was a net change of " + NetChange() + "."; 
     for(int i = 0; i < blazing.length; i++) 
     { 
     returnString += "The temperature above 100 degrees is " + above100Degrees() + "." + "\n" + "\t" + blazing[i] + "\t"; 
     } 
     return returnString; 
    } 

출력

Forecast.java:122: error: cannot find symbol 
     for(int i = 0; i < blazing.length; i++) 
         ^
    symbol: variable blazing 
    location: class Forecast 
Forecast.java:124: error: cannot find symbol 
     returnString += "The temperature above 100 degrees is " + above100Degrees() + "." + "\n" + "\t" + blazing[i] + "\t"; 
                             ^
    symbol: variable blazing 
    location: class Forecast 
2 errors 
+2

'blazing'배열은 'toString'메서드에서 선언되지 않고 'above100Degrees'메서드에서 반환 된 배열은 아무 곳에도 저장되지 않습니다. – AntonH

+0

좋아요, "blazing"의 요소를 어떻게 사용합니까, 표시하고 싶습니다 – PatGreens

+1

변수'blazing'가 당신의 toString() 메소드에서 사용할 수없는 것 같습니다. 위에서 작성한 코드에서'blazing '은'above100degrees 메소드'에만 속하는 것으로 보입니다. 'blazing'을 클래스 레벨 변수로 만들어서 다른 곳에서도 볼 수 있습니다. – Durandal

답변

2

변경 :

for(int i = 0; i < blazing.length; i++) 
{ 
    returnString += "The temperature above 100 degrees is " + above100Degrees() + "." + "\n" + "\t" + blazing[i] + "\t"; 
} 

에 :

int[] blazing = above100Degrees(); 
for(int i = 0; i < blazing.length; i++) 
{ 
    returnString += "The temperature above 100 degrees is " + blazing[i] + "."; // personalise format 
} 
+0

이 16 진 코드에 대해 수행 할 작업은 배열의 요소를 표시하지 않습니다. – PatGreens

+0

'toString'메서드의 결과를 Sysout으로 출력 할 때 표시되는 내용은 무엇입니까? – AntonH

+0

좋아, 나는 그 고민을 해결했다. – PatGreens

5

이 배열은 above100Degrees 메소드에 의해 리턴된다. 그것이 호출되는 범위에 변수 이름 blazing을 설정하지 않습니다. 사실, 반환 된 배열을 다르게 명명 된 변수에 할당 할 수 있습니다.

int[] reallyHot = above100Degrees(); 
// Then check reallyHot... 
for(int i = 0; i < reallyHot.length; i++) 
{ 
    returnString += "The temperature above 100 degrees is " + reallyHot[i] + "." + "\n"; 
} 

이 배열 액세스 구문을 사용하여 특정 요소에 액세스 할 수 있는지 확인하십시오.

2

귀하의 above100Degrees() 함수는 타오르는 배열을 반환하지만 당신은 당신의 toString() 메소드에 그 함수를 호출하지 않습니다. toString()이 타오르는 것은 존재하지 않는다고 생각합니다.

위의 toString() 내에서 100Degrees()를 호출하고 결과 배열을 변수에 저장하십시오. 그런 다음 blazing.length 대신 (newVariable) .length를 반복 할 수 있습니다.