0

私は値のリスト (天気データ) を持っています。リストを書いた人は、報告する値がないときに値「9999」を使用しました。テキスト ファイルをインポートし、次のコードを使用してデータを取得して編集しました。

import java.io.*;
import java.util.*;

public class weatherData {

public static void main(String[] args)
        throws FileNotFoundException{
    Scanner input = new Scanner(new File("PortlandWeather2011.txt"));
    processData(input);
}

public static void processData (Scanner stats){
    String head = stats.nextLine();
    String head2 = stats.nextLine();
    System.out.println(head);
    System.out.println(head2);
    while(stats.hasNextLine()){
        String dataLine = stats.nextLine();
        Scanner dataScan = new Scanner(dataLine);
        String station = null;
        String date = null;
        double prcp = 0;
        double snow = 0;
        double snwd = 0;
        double tmax = 0;
        double tmin = 0;
        while(dataScan.hasNext()){
            station = dataScan.next();
            date = dataScan.next();
            prcp = dataScan.nextInt();
            snow = dataScan.nextInt();
            snwd = dataScan.nextInt();
            tmax = dataScan.nextInt();
            tmin = dataScan.nextInt();
            System.out.printf("%17s %10s %8.1f %8.1f %8.1f %8.1f %8.1f \n", station, date(date), prcp(prcp), inch(snow), inch(snwd), temp(tmax), temp(tmin));
        }
    }

}
public static String date(String theDate){
    String dateData = theDate;
    String a = dateData.substring(4,6);
    String b = dateData.substring(6,8);
    String c = dateData.substring(0,4);
    String finalDate = a + "/" + b + "/" + c;
    return finalDate;

}

public static double prcp(double thePrcp){
    double a = (thePrcp * 0.1) / 25.4;
    return a;
}

public static double inch(double theInch){
    double a = theInch / 25.4;
    if(theInch == 9999){
        a = 9999;
    }
    return a;
}


public static double temp(double theTemp){
    double a = ((0.10 * theTemp) * 9/5 + 32);
    return a;
}
}

私が抱えている問題は、値を取得して「9999」が表示されるたびにチェックし、「----」を出力することです。double 型の値を取得して文字列を出力する方法がわかりません。

このコードは、値を取得して値 9999 をチェックし、何もしません。これが私の問題です:

public static double inch(double theInch){
    double a = theInch / 25.4;
    if(theInch == 9999){
        a = "----";
    }
    return a;
}

この質問に多くの情報を入れて申し訳ありません。明確にする必要がある場合は、お尋ねください。助けてくれてありがとう!

4

2 に答える 2

6

inchdoubleではなくstringを返すように関数を変更する必要があります。

public static String inch(double theInch){
    if(theInch == 9999){
        return "----";
    }
    return Double.toString(theInch/25.4);
}
于 2012-11-29T01:52:39.527 に答える
2

最初の問題は、 sではなくScannerasからすべての値を読み取っていることだと思います。たとえば、あなたの声明に基づいて、実際には次のデータ型を読むべきだと思います...intdoubleSystem.out.println()

        prcp = dataScan.nextDouble();
        snow = dataScan.nextDouble();
        snwd = dataScan.nextDouble();
        tmax = dataScan.nextDouble();
        tmin = dataScan.nextDouble();

また、inch()メソッドが行でのみ使用されるかのように、戻り値の型としてSystem.out.println()a に変更する必要があります...String

public String inch(double theInch){
    if (theInch == 9999){
        return "----";
    }
    return ""+(theInch/25.4);
}
于 2012-11-29T01:55:09.903 に答える