0

私の課題の 1 つで、熱指数を計算し、printf を使用して出力をフォーマットして、次のようにきれいに表示する必要があります。

                   Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov Dec
________________________________________________________________________________________
Temperature (F):   1.1   2.2   3.3   4.4   5.5   6.6   7.7   8.8   9.9   10   11   12
Humidity (%):      1     2     3     4     5     6     7     8     9     10.3 11.2 12.1
HI (F):            1.1   2.2   3.3   4.4   5     7     6     8     9     10   11   12

問題は、文字列の配列には数値が含まれているため、文字列の配列をフォーマットする方法がわからないことです。私のプログラムでは、String として宣言した配列を double または float のように変換してから、printf でフォーマットする必要がありますか? また、計算に配列を使用する方法がわかりません。私の課題では、2 つの配列を使用して熱指数を計算する必要があります。この問題を解決しようとして、インデックスごとに個別に計算を実行してみました。問題は、プログラムが配列全体を表示するだけであることです。プログラムは 2 つのファイルを読み取り、テキストを配列に格納します (各ファイルに 1 つの配列)。どんな助けでも大歓迎です。最初のファイルには次のものが含まれています。

70.3 70.8 73.8 77.0 80.7 83.4 84.5 84.4 83.4 80.2 76.3 72.0

2番目にはこれが含まれます:

69 67 66 64 66 69 67 67 70 69 69 70

私のコードはこれです:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author timothylee
 */
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

public class HeatIndex {

/**
 * @param args the command line arguments
 * @throws java.io.IOException
 */
public static void main(String[] args) throws IOException{
    // TODO code application logic here

    // create months
    System.out.println("Jan" +  "    Feb" + "    Mar" + "    April" + "  May" + "    June" + 
            "   July" + "   Aug" + "    Sep" + "    Oct" + "    Nov" + "    Dec");

    // create line
    System.out.println("_________________________________________________"
            + "__________________________________");

    // // read KeyWestTemp.txt

    // create token1
    String token1 = "";

    // create Scanner inFile1
    Scanner inFile1 = new Scanner(new File
    ("/Users/timothylee/KeyWestTemp.txt")).
            useDelimiter(",\\s*");

    // create temps1
    List<String> temps1 = new LinkedList<String>();

    // while loop
    while(inFile1.hasNext()){

        // find next
        token1 = inFile1.next();

        // initialize temps1
        temps1.add(token1);
    }

    // close inFile1
    inFile1.close();

    // create array
    String[] tempsArray1 = temps1.toArray(new String[0]);

    // for-each loop
    for(String s : tempsArray1){

        // display Temp (F)
        System.out.print("Temp (F) ");

        // display s
        System.out.printf(tempsArray1[0]);

        // create new line
        System.out.println();
    }

    // create token2
    String token2 = "";

    // create Scanner inFile2
    Scanner inFile2 = new Scanner(new File
    ("/Users/timothylee/KeyWestHumid.txt")).
            useDelimiter(",\\s*");

    // create temps2
    List<String> temps2 = new LinkedList<String>();

    // while loop
    while(inFile2.hasNext()){

        // find next
        token2 = inFile2.next();

        // initialize temps2
        temps2.add(token2);
    }

    // close inFile2
    inFile2.close();

    // create array
    String[] tempsArray2 = temps2.toArray(new String[0]);

    // for-each loop
    for(String ss : tempsArray2){

        // create Humidity (%)
        System.out.print("Humidity (%) ");

        // display ss
        System.out.printf(tempsArray2[0]);
    }

    // calculate heat index


}

}

そして私の出力はこれです:

run:
Jan    Feb    Mar    April  May    June   July   Aug    Sep    Oct    Nov    Dec
___________________________________________________________________________________
Temp (F) 70.3   70.8   73.8   77.0   80.7   83.4   84.5   84.4   83.4   80.2   76.3   72.0   
Humidity (%) 69 67 66 64 66 69 67 67 70 69 69 70BUILD SUCCESSFUL (total time: 0 seconds)
4

1 に答える 1

0

Formatterを見てください。メソッドを使用する必要がありますformat()。たとえば、このようなものは、最初の行に必要なスペースを提供します。

formatter.format("%15s%5s%5s%5s",months[0],months[1],months[2],months[3]); //and so on for all twelve months

使用する必要がある数字については

formatter.format("%5.1f",myFloat);

最初の桁は自然数部分に使用する文字数を示し、2 番目の桁は小数部分に使用する文字数を示します。すべての数値に 10 進数が 1 桁しかなく、数値間にスペースが必要な場合は、次の%5.1f形式を使用します。

于 2013-11-09T18:17:35.700 に答える