【问题标题】:When printing arrays with variables, it prints individual answers, not all打印带有变量的数组时,它会打印单个答案,而不是全部
【发布时间】:2018-11-04 02:07:04
【问题描述】:

这是一个保存人的年龄和姓氏的程序:

E = Array.new(10)
A = Array.new(10)
for i in(0..9)
  puts "¿Cúal es tu edad?"
  edad = gets.chomp
  E[i] = edad
  puts "¿Cúal es tu apellido?"
  apellido = gets.chomp
  A[i] = apellido
end
 gets
for m in(0..9)
  puts "Apellido es " + A.to_s + " tengo " + E.to_s + " años. "
end
gets

打印出来:

Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.
Apellido es ["primero", "segundo", "tercero", "cuarto", "quinto", "sexto", "septimo", "octavo", "noveno", "decimo"] tengo ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] años.

当我引入 10 和 10 变量并打印它们时,它会打印所有信息,而不是 1 和 1。它同时生成所有信息。

【问题讨论】:

    标签: arrays ruby string


    【解决方案1】:

    您应该将其中一行更改为,以便您可以通过索引访问数组元素(但不要使用大写的变量名):

    puts "Apellido es " + A[m].to_s + " tengo " + E[m].to_s + " años. "
    

    但我建议让您的代码更“Rubyish”,如下所示:

    people = Array.new() # initializa an array
    10.times do |n|
      person = {} # initialize a hash
      # puts "¿Cúal es tu edad?"
      person[:edad] = 20 + n # stores into the hash, here use gets for user input instead of 20 + n
      # puts "¿Cúal es tu apellido?"
      person[:apellido] = 'Pedro' + n.to_s # stores into the hash, here use gets for user input instead of 'Pedro' + n.to_s
      people << person # insert the person into people
    end
    people.each do |person|
      puts "Apellido es #{person[:apellido]} tengo #{person[:edad]} años." # string interpolation
    end
    

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 2018-11-21
      • 2017-08-28
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多