2014-01-24 49 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

数组'炽热'未在'toString'方法中声明,并且从'above100Degrees'方法返回的数组也不会保存在任何地方。 – AntonH

+0

好吧,那么如何使用“炽热”的元素,我想要显示它们 – 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

我该如何处理这个十六进制代码,它不会显示数组的元素 – PatGreens

+0

当您向Sysout输出'toString'方法的结果时,它会显示什么? – 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()并将结果数组保存到变量。然后你可以迭代(newVariable).length而不是blazing.length。