Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

264
Views
El código no se ejecuta cuando tenía una declaración más de elsif

¿Alguien puede explicarme por qué mi código no se ejecuta cuando tengo mi segunda declaración de elsif ? Estoy seguro de que es algo simple, pero lo he repasado varias veces, escribí el código nuevamente y todavía no puedo resolver el error. Solo falla cuando las líneas 25 a 30 están y dice

método indefinido`[]' en la línea 35

pero este error cambiará a otra cosa si lo ejecuto de nuevo.

Así que esto está afectando a line_three como prueba. Estoy probando "Southern Cross" para la ubicación de inicio y "Windsor" para el destino.

Este es un mensaje de error que recibo:

 Traceback (most recent call last): pt_planner.rb:35:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)

otro es:

 Traceback (most recent call last): pt_planner.rb:33:in `<main>': undefined method `-' for nil:NilClass (NoMethodError)

Espero que esta edición ayude

 require 'pry' line_one = ["flinders street", "richmond", "east richmond", "burnley", "hawthorn", "glenferrie"] line_two = ['Flagstaff', 'Melbourne Central', 'Parliament', 'Richmond', 'Kooyong', 'Tooronga'] line_three = ['Southern Cross', 'Richmond', 'South Yarra' ,'Prahran' 'Windsor'] #1 where would you like to go capture input puts "what is your starting location?" user_input_1 = gets.chomp puts "what is your end location" user_input_2 = gets.chomp if line_one.include?(user_input_1) == true and line_one.include?(user_input_2) == true origin_index = line_one.index(user_input_1) destination_index = line_one.index(user_input_2) route = line_one elsif line_two.include?(user_input_1) == true and line_two.include?(user_input_2) == true origin_index = line_two.index(user_input_1) destination_index = line_two.index(user_input_2) route = line_two elsif line_three.include?(user_input_1) == true and line_three.include?(user_input_2) == true origin_index = line_three.index(user_input_1) destination_index = line_two.index(user_input_2) route = line_three end stops = destination_index - origin_index puts "origin: #{route[origin_index]}\ndestination: #{route[destination_index]}\n#{route.slice(origin_index +1, stops)}\n stops total: #{destination_index - origin_index}" binding.pry
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Intentaste buscar en una matriz incorrecta

Cambio

 destination_index = line_two.index(user_input_2)

para

 destination_index = line_three.index(user_input_2)

Además, no necesita comparar con true . include? devuelve true o false , eso es suficiente. Es mejor usar && en lugar de and . Y poner condición en una línea con elsif

Puede refactorizar así para verificar que ambos valores estén en la matriz

 ([user_input_1, user_input_2] - line_three).empty?
over 4 years ago · Santiago Trujillo Report

0

En su line_three Array, ha olvidado la coma entre 'Prahran' y 'Windsor' . Como tal, Ruby analiza esto como una continuación de cadena y agrega un solo elemento como 'PrahranWindsor' aquí.

Con eso, ninguna de sus condiciones if o elsif coincide. En consecuencia, se establecerá la nota de las variables que establezca en cualquiera de las ramas y, en su lugar, se inicializará implícitamente como nil . Como asume que estas variables se establecerán más adelante en su programa, las cosas se rompen.

Para solucionar esto, primero debe corregir la definición de su matriz line_three .

También debe agregar código para manejar el caso de que ninguna de sus consultas coincida. Aquí, podría agregar una rama else final que, por ejemplo, muestre un mensaje de error y le pida al usuario que intente nuevamente.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!