2

言語の学習を支援するために、Ruby に作成した Java プログラムを再プログラミングしようとしています。しかし、Ruby で Java コードのこの特定のセクションをコーディングする方法を見つけるのに非常に苦労しています。

/* read the data from the input file and store the weights in the 
array list */
Scanner readFile = new Scanner(new FileReader(inFileName));
ArrayList<Weight> listOfWeights = new ArrayList<Weight>();
while (readFile.hasNext()) {
    int pounds = readFile.nextInt();
    int ounces = readFile.nextInt();
    Weight thisWeight = new Weight(pounds, ounces);
    listOfWeights.add(thisWeight);
}

このコードは、次のように 2 つの列 (最初の列はポンド、2 番目の列はオンス) に整数のリストを含むファイルを受け取ります。

120  2
195 15
200  5
112 11
252  0
140  9

、各行の数値を使用して一連の Weight オブジェクトを作成します。次に、それらをリストに追加します。Rubyでこれを行う簡単な方法はありますか? これまでのところ、私の Ruby プログラムは次のようになっています。

begin
  puts "Enter the name of the input file > "
  in_file_name = gets
  puts \n

  list_of_weights = []
  File.open(in_file_name, "r") do |infile|
    while (line = infile.gets)

助けてくれてありがとう!

4

1 に答える 1

1

あなたが尋ねたように同等ではありませんが、Ruby は動的言語なので、そのような考えは必要ないと思います。だからここにあなたがそれを行うことができる方法があります

  while (line = infile.gets)
    pounds, ounces = line.split(' ')
    p "-#{pounds}- -#{ounces}-"
  end

出力

-120- -2-
-195- -15-
-200- -5-
-112- -11-
-252- -0-
-140- -9-

または、よりルビーな方法(と思います)

File.open(in_file_name, "r").each_line do |line|
  pounds, ounces = line.split(' ')
  p "-#{pounds}- -#{ounces}-"
end
于 2012-04-24T02:40:38.567 に答える