所以我在课堂上输入了这段代码,这是一种找出连续两天最大温差的方法还有十天我做了一个有十个索引的数组,我做了这个:
import java.util.Arrays;
import java.util.Collections;
public class Forecast
{
int [] temps;
int WEEK;
int Under32 = 0;
int[] blazing;
public Forecast( int y, int[] x )
{
WEEK = y;
temps = new int[x.length];
//instantiate array with same length as parameter
for ( int i = 0; i <= temps.length-1; i++ )
{
temps[i] = x[i];
}
Arrays.sort(temps);
}
public void setWeek( int u )
{
WEEK = u;
}
public int getWeek()
{
return WEEK;
}
public void setArray( int[] newTemps )
{
temps = newTemps;
}
//returns an array of temps
public int[] getTemps()
{
int[] w = new int[temps.length];
for(int i = 0; i < temps.length; i++)
{
temps[i] = w[i];
}
return w;
}
public int getUnderFreeze()
{
int FROZEN = 0;
for( int i = 0; i < temps.length; i++ )
{
if( temps[i] < 32 )
{
FROZEN += 1;
}
}
return FROZEN;
}
public int[] above100Degrees()
{
int newArrayLength=0;
for( int i = 0; i < temps.length; i++ )
{
if( temps[i] > 100 )
{
newArrayLength++;
}
}
int[] blazing = new int[newArrayLength];
int positionInNewArray = 0;
for( int i = 0; i < temps.length; i++ )
{
if( temps[i] > 100 )
{
blazing[positionInNewArray] = temps[i];
positionInNewArray++;
}
}
return blazing;
}
public int[] Assorted()
{
Arrays.sort(temps);
return temps;
}
//return an array in descending order, using set algorithm
public int[] descendSort()
{
int[] tempArray = new int[temps.length];
for (int i = temps.length-1; i <= 0; --i)
{
for (int j = 0; j < temps.length-1; ++i){
tempArray[j] = temps[i];
}
}
return tempArray;
}
//method returning the largest change between two consecutive days
public int NetChange()
{
int biggestNet = Math.abs(temps[0] - temps[1]);
for( int i = 0; i < temps.length - 1; i++ )
{
if( Math.abs((temps[i] - temps[i+1])) > biggestNet )
{
biggestNet = Math.abs(temps[i] - temps[i+1]);
}
}
return biggestNet;
}
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() + "." + "\n" +
"The temperature above 100 degrees is: " ;
int[] blazing = above100Degrees();
for( int i = 0; i < blazing.length; i++ )
{
returnString += "\t" + blazing[i] ;
}
return returnString;
}
public boolean equals(Object c)
{
if( !(c instanceof Forecast))
return false;
else
{
Forecast objTemp = (Forecast) c;
if( temps.length != objTemp.temps.length )
return false;
}
return true;
}
}
客户端类中的对象数组如下:
int[] temps1 = new int[]{45, 76, 12, 102, 107, 65, 43, 67, 81, 14};
我的输出是:
The largest difference this week was a net change of -2.
这个输出严重错误,我做错了什么???是吗?
最佳答案
1)将此部分更改如下。
if( Math.abs(temps[i] - temps[i+1]) > BiggestNet )
{
BiggestNet = Math.abs(temps[i] - temps[i+1]);
}
2)同样,这样初始化。
int BiggestNet = Math.abs(temps[0] - temps[1]);
3)同样,改变这个。
BiggestNet = Math.abs(temps[i] - temps[i+1]);
这是你的固定程序。
public class Test005 {
private static int[] temps = new int[] { 45, 76, 12, 102, 107, 65, 43, 67, 81, 14 };
public static int NetChange() {
int BiggestNet = Math.abs(temps[0] - temps[1]);
for (int i = 0; i < temps.length - 1; i++) {
if (Math.abs((temps[i] - temps[i + 1])) > BiggestNet) {
BiggestNet = Math.abs(temps[i] - temps[i + 1]);
}
}
return BiggestNet;
}
public static void main(String[] args) {
System.out.println(NetChange());
}
}