Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

269
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda