0

配列の各要素をテキスト ファイルに書き込みたい。たとえば、以下はより明確に示します

String[] Name = {"Eric","Matt","Dave"}

Int[] Scores = {[45,56,59,74],[43,67,77,97],[56,78,98,87]}

double[] average = {45.7,77.3,67.4}

テキストファイルに以下が欲しい

Student Eric scored 45,56,59,74 with average of 45.7
Student Matt scored 43,67,77,97 with average of 77.3
Student Dave scored 56,78,98,87 with average of 67.4

出力ファイルを作成しました

PrintStream output = new PrintStream(new File("output.txt"));

forループを使用しました

for(int i =0;i<=Name.length;i++){

    output.println("Student  " + Name[i] + " scored " + Scores[i] + " with average of " + average[i]);
}

しかし、これはうまくいきませんでした。助けてください。

4

4 に答える 4

2

私の推測では、コンパイラはこの行を気に入らなかったと思います:

Int[] Scores = {[45,56,59,74],[43,67,77,97],[56,78,98,87]}

IntJavaには型がありません。あなたが意味すると仮定すると、 int ではないintため、コンパイラはまだ文句を言います![45,56,59,74]

必要なのは、int[][]次のような宣言です。{{45,56,59,74}}

それでも、出力に満足していただけるかどうかはわかりません...

于 2013-02-23T01:21:29.593 に答える
0
  1. 2 次元配列には、1 つではなく 2 つのブラケットが必要です。
  2. Int は小文字にする必要があります。
  3. 変数は小文字にする必要があります (スコアではなくスコア)。

したがって、次のようになります。

int[][] scores = {{45,56,59,74},{43,67,77,97},{56,78,98,87}};

また、for ループは 0 から 1 未満の長さまで実行する必要があります。そうしないと、範囲外になります。

names.length = 3
names[0] = "Eric"
names[1] = "Matt"
names[2] = "Dave"

したがって、names[3] にアクセスしようとすると、配列には 3 つの要素しか含まれていないため、範囲外の例外が発生します。

于 2013-02-23T01:25:59.693 に答える
0

PrintStream をフラッシュまたは閉じるのを忘れた可能性があります (上記のエラーも修正しました)。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class Main {
    public static void main(String[] args) {
        String[] Name = {"Eric","Matt","Dave"};

        int[][] Scores = {{45,56,59,74},{43,67,77,97},{56,78,98,87}};

        double[] average = {45.7,77.3,67.4};



        try (
                PrintStream output = new PrintStream(new File("output.txt"));
            ){

            for(int i =0;i<Name.length;i++){
                String sc ="";
                for (int j=0;j<Scores[i].length;j++){
                        sc+=Scores[i][j]+" ";
                }
                output.println("Student  " + Name[i] + " scored " + sc + " with average of " + average[i]);
            }
            output.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }

    }



}

これは java7 構文であることに注意してください (try..catch ブロックに())

参照: http://blog.sanaulla.info/2011/07/10/java-7-project-coin-try-with-resources-explained-with-examples/

于 2013-02-23T01:26:40.197 に答える
-1

PrintStream の代わりに FileWriter を使用する必要があります。

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
                                        "C:/new.txt"), true));

StringBuffer sb = new StringBuffer();

for(int i =0;i<=Name.length;i++){
    sb.append("Student " + Name[i] + " scored " + Scores[i]
    + " with average of " + average[i] + "\n"); 
}

bw.write(sb.toString());
bw.close();
于 2013-02-23T01:22:25.053 に答える