0

そのため、コンピューター サイエンス コースで熱指数を計算するためのコードに取り組んでいます。使用するように指示されたテキスト ファイルから、プログラムが使用する配列にデータをロードする際に問題が発生しています。コメントアウトされているブロックは、私が試していた別の解決策ですが、どちらも機能しません...どうすれば修正できますか? ありがとう!

import java.util.Scanner; 
import java.io.File; 
import java.io.IOException;

public class HeatIndex
{

public static void main(String [] args) throws IOException 
{
Scanner keyWestHumidScan = new Scanner(new File("KeyWestHumid.txt"));
Scanner keyWestTempScan = new Scanner(new File("KeyWestTemp.txt"));

int counter1 = 0;
int counter2 = 0;
int [] keyWestHumid = {};
double [] keyWestTemp = {};
String header1 = "                                     Heat index: Key West, Florida                              ";
String header2 = "\n                                                Months                                        \n          ";
String [] months = {"Jan   ", "Feb   ", "Mar   ", "Apr   ", "May   ", "Jun   ", "Jul   ", "Aug   ", "Sep   ", "Oct   ", "Nov   ", "Dec   ", "Avg   \n"};
String header3 = "*************************************************************************************";
String [] Labels = {"Temp (F)      \n", "Hudimitiy (%)    \n", "HI (F)      "};


//read keyWestHumid into array
while(keyWestHumidScan.hasNext())
{
 keyWestHumid[counter1] = keyWestHumidScan.nextInt();
 counter1++;
 //String data1_parse = keyWestHumidScan.next();
 ///int data1 = Integer.parseInt(data1_parse);
 //keyWestHumid[counter1] = data1;
 //counter1++;
   }
//read keyWestTemp into array
while(keyWestTempScan.hasNext()) 
{
   String data2_parse = keyWestTempScan.next();
   double data2 = Double.parseDouble(data2_parse);
   keyWestTemp[counter2] = data2;
   counter2++;

}
System.out.println(header1);
System.out.print(header2);
for(String headData:months) {
System.out.print(headData);
}
System.out.println(header3);
for(String headData:Labels) {
System.out.print(headData);
}


}
}
4

4 に答える 4

1

この行で:

double [] keyWestTemp = {};

長さゼロの配列を作成したため、何も割り当てることができません。配列のサイズを変更することはできないため、ほとんど役に立ちません。

使用する前にサイズを確立する必要があります。

double[] keyWestTemp = new double[10];  // adjust size to fit your actual needs

keyWestHumid配列についても同じことを行う必要があります。

于 2013-10-25T15:55:40.907 に答える
0
int [] keyWestHumid = {};
double [] keyWestTemp = {};

これらはサイズがゼロの配列です。サイズを設定せずにこれらの配列に値を割り当てようとすると、範囲外の例外が発生します。

配列の最大サイズがわかっている場合は、通常の配列を使用できます。@rgettmanによる回答1で述べたように

配列の最大要素数がわからない場合。ArrayListを使用します。 ArrayList要素を追加すると、自動的に大きくなります。

于 2013-10-25T15:58:10.657 に答える
0

ArrayList を使用します。

import java.util.ArrayList;
ArrayList<Double> keyWestTemp = new ArrayList<Double>();

そして、それは一般的な方法です:

keyWestTemp.add(...);
keyWestTemp.clear();
keyWestTemp.contains(...);
keyWestTemp.get(...);
于 2013-10-25T15:58:42.800 に答える