2

我正在尝试将我制作的 Java 程序重新编程为 Ruby,以帮助我学习这门语言。但是,我很难找到一种方法来用 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);
}

此代码采用一个文件,该文件在两列中包含整数列表(第一列是磅,第二列是盎司),如下所示:

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

,并使用每行中的数字制作一堆重量对象。然后它将它们添加到列表中。有没有简单的方法在 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 回答