2

基本的にテキストファイルからデータを返すはずの配列「seats」を返そうとしています-「#」の15x30グリッド。私は多くのことを試しましたが、Java の経験がほとんどないため、イライラしています。コードはコンパイルされますが、メソッドを呼び出すときに正しく出力されません。

誰かがコンストラクターまたはメソッドのいずれかを修正するのを手伝ってくれるなら、私はそれを大いに感謝します...そして、ひどく複雑なコードの使用を控えることができる方法があれば、私もそれを感謝します. そして説明!ありがとうございました!

import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.util.*;

public class TicketManager
{
    private static int NUMROWS = 15;
    private static int NUMCOLS = 30;
    private char[][] seats = new char[NUMROWS][NUMCOLS];
    private double[] price = new double[NUMROWS];
    private int seatsSold;
    private int totalRevenue;

    public TicketManager()
    {
        try
        {
            BufferedReader br = new BufferedReader(new FileReader("seatAvailability.txt"));
            String line = br.readLine();    

            while (line != null)
            {
               for (int i = 0; i < 15; i++)
               {
                   seats[i] = line.toCharArray();
               }
            }
        }
        catch(IOException exception)
        {
            System.out.println("Error processing file: " + exception);
        }
    }

    public String returnSeats()
    {
        String result = "";
        for (int i =0; i <seats.length; i++)
        {
            for (int j = 0; j < seats.length; j++)
            {
                result += seats[i][j] + " ";
            }
            System.out.println("");
        }
        return result;
    }
}
4

2 に答える 2

0

あなたが持っているところにはfor (int j = 0; j < seats.length; j++)、あなたが持っている必要がありますfor (int j = 0; j < seats[i].length; j++)

これは、多次元配列の仕組みに関係しています。それらは配列の配列です。だから、あなたが書くときseats.length、あなたは何行あるかを尋ねています。コールseats[i].lengthすると、列に並んでいるメンバーの数が尋ねられますi

于 2012-12-02T01:52:07.823 に答える
0

ループにわずかな問題があります。以下のコードの更新されたセクション:

 public TicketManager(){
   try{
    BufferedReader br = new BufferedReader(new FileReader("seatAvailability.txt"));
       for (int i = 0; i < 15; i++)
        String line = br.readLine();    
         seats[i] = line.toCharArray();
       }
   }catch(IOException exception){
       System.out.println("Error processing file: " + exception);
   }
 }

入力用に 15 行 (行) を読み取ります。30各行に正確な文字を入力してください。また、入力行の文字にスペースを使用しないでください。たとえば、各行の入力は次のようにする必要がありますX0000xx00xx0xx0xx000xx0xxx0x00

returnSeatsメソッドで、seats[0].lengthまたはseats[i].length内側のループと StringBuilder で次のように使用します。

public String returnSeats(){
    StringBuilder result = new StringBuilder();
    for (int i =0; i <seats.length; i++){
        for (int j = 0; j < seats[i].length; j++){
            //append seat character in the result string
            result.append(seats[i][j]);
        }
        //append new line character in the string in between
        result.append(System.lineSeparator());
    }
    return result.toString();
}
于 2012-12-02T01:51:43.373 に答える