Ошибка, напечатав арифметические операции в RUBY с PUTS?

Я учусь программировать в Руби и я старался реализовывать основное упражнение с арифметическими операциями, но я не понимаю, что он переходит к, показав и тому, чтобы реализовывать вычисление каких-то операций внутри одного puts:

puts "Ingrese una variable para realizar la operaciones arítmeticas"
print "El primer valor númerico: "
Y = gets
print "El segundo valor: "
X = gets
puts ("Suma: "+(Y+X).to_s)
puts ("Resta: "+(Y-X).to_s)
puts ("Producto: "+(Y*X).to_s)
puts ("Cociente: "+(Y/X).to_s)
puts ("Resto: "+(Y%X).to_s)

В каждой из инструкций, где я пробую показывать результат, появляется различная ошибка для каждой из операций, за исключением суммы и оставшейся части (или модуль):

Для отделения:

Ingrese una variable para realizar la operaciones arítmeticas
El primer valor númerico: 4
El segundo valor: 1
Suma: 41Traceback (most recent call last):
./Ejercicio1.rb:7:in `<main>': undefined method `-' for "4":String (NoMethodError)
Did you mean?  -@

Продукт:

Ingrese una variable para realizar la operaciones arítmeticas
El primer valor númerico: 4
El segundo valor: 1
Suma: 41
Traceback (most recent call last):
        1: from ./Ejercicio1.rb:8:in `<main>'
./Ejercicio1.rb:8:in `*': no implicit conversion of String into Integer (TypeError)

Частное:

Ingrese una variable para realizar la operaciones arítmeticas
El primer valor númerico: 4
El segundo valor: 1
Suma: 41
Traceback (most recent call last):
        1: from ./Ejercicio1.rb:8:in `<main>'
./Ejercicio1.rb:8:in `*': no implicit conversion of String into Integer (TypeError)
2
задан 07.08.2019, 15:37
1 ответ

EstÃ: s стараясь суммировать strings, для которых только estÃ: определенные операции + и %, оставшаяся часть будет бросать тебе ошибку:

[60] pry(main)> x = '1'
=> "1"
[61] pry(main)> y = '2'
=> "2"
[62] pry(main)> x + y
=> "12"
[63] pry(main)> x - y
NoMethodError: undefined method `-' for "1":String
from (pry):193:in `<main>'
[64] pry(main)> x * y
TypeError: no implicit conversion of String into Integer
from (pry):194:in `*'
[65] pry(main)> x / y
NoMethodError: undefined method `/' for "1":String
from (pry):195:in `<main>'
[66] pry(main)> x % y
=> "1"

то, что ты должен делать, состоит в том, чтобы конвертировать твой string в integer используя gets.to_i

2
ответ дан 11.11.2019, 02:29

Теги

Похожие вопросы