2015-02-07 2 views
-2
Getting this when running program 

customerbill.rb: 28: ошибка синтаксиса, неожиданный tIVAR, ожидающий окончания ввода. Я пытаюсь вычислить проверку ресторана в рубине.Ошибка синтаксиса Ruby, неожиданный tIVAR, ожидающий конец ввода

class CustomerBill 


class Bill < CustomerBill 
    def initalize (burgers, drinks, subtotal) 
    @burgers = 6.95 * 5 
    @drinks = 1.75 * 4 
    @meal = @burgers + @drinks 
    @totalBill = @meal + @taxAmount + @tipAmount 
end 

конец

class CustomerTax < CustomerBill 
    def initalize (tax, taxAmount, totalWithTax) 
    @tax   = 0.0825 
    @taxAmount = @meal * @tax 
    @totalWithTax = @meal + @tax 
end 

конец

class CustomerTip 
def initalize (tipRate, tipAmount) 
@tipRate = 0.15 
@tipAmount = @totalWithTax * @tipRate 
end 

конец

puts "Total meal charge #{@meal}" 
puts "Tax amount #{@taxAmount}" 
puts "Tip amount #{@tipAmount}" 
puts "Total bill #{@totalBill}" 
+1

Было бы здорово, если бы вы могли переформатировать это, чтобы соответствующие вещи были помечены как код. :) Кроме того, если это фактический код, там очень много целей. :) –

+0

действительно непонятно, что вы пытаетесь сделать. У вас определенно есть некоторые проблемы с конечными утверждениями, но это больше, чем это. Например, действительно ли вы хотите, чтобы класс счета определялся внутри CustomerBill? – nPn

+1

@DavidHoelzer Трудно сказать по форматированию, но на самом деле их недостаточно _ends_. –

ответ

1

Как указан в ответе heading_to_tahiti в вас есть недостающий конец заявление, но кроме того, вы полностью недопонимания использования классов в рубине. То, что вы пытаетесь сделать, это на самом деле только так:

burgers = 6.95 * 5 
drinks = 1.75 * 4 
meal = burgers + drinks 
tax   = 0.0825 
taxAmount = meal * tax 
totalWithTax = meal + taxAmount 
tipRate = 0.15 
tipAmount = totalWithTax * tipRate 
totalBill = meal + taxAmount + tipAmount 



puts "Total meal charge #{meal}" 
puts "Tax amount #{taxAmount}" 
puts "Tip amount #{tipAmount}" 
puts "Total bill #{totalBill}" 
+0

Вот что мне нужно делать. Я был в предположении, что это должно было быть введено в класс. Спасибо, что ваше решение разрешило эту проблему для меня. – user3905353

+0

@ пользователь3905353. Вы просто удалили мой ответ от правильного ответа на этот вопрос. Поскольку решение nPn действительно дает результат, оно напрямую не адресует ошибку синтаксиса, которая находится в корне вашего вопроса, что является ошибкой «синтаксис ожидания конца ввода». Который я немедленно дал правильный ответ для вас. После решения вопроса вы затем прокомментировали мой ответ с отдельной проблемой, с которой вы столкнулись, с переменной, которая не была инициализирована, и я также обратился к ней. –

+0

@ user3905353 - Просто хотел добавить немного больше контекста к моему предыдущему комментарию. SO предназначен для решения проблем программирования и создания библиотеки ответов для их решения. В этом случае проблема, которую вы опубликовали, как решить «синтаксическую ошибку, неожиданный tIVAR, ожидающий конца ввода», решается путем добавления отсутствующих операторов «end».Другие начинающие программисты, которые ищут SO для подобных проблем, не смогут решить эту проблему, просто удалив определения классов и методов, как это диктует это решение. Это просто не реальное решение проблемы, которую вы опубликовали. –

1

вам не хватает своего конца заявление-х которые закрывают свои определения, которые поэтому ошибка говорит о «ожидании конца ввода». Чтобы исправить закрыть все определения, методы, классы и т.д. с торцевым заявлением, т.е.

class Bill < CustomerBill 

    def initalize (burgers, drinks, subtotal) 
     @burgers = 6.95 * 5 
     @drinks = 1.75 * 4 
     @meal = @burgers + @drinks 
     @totalBill = @meal + @taxAmount + @tipAmount 
    end 

end 
+0

Спасибо всем. Я должен был устранить ошибку, установив конечные утверждения. Теперь мои строки печатаются, но переменные экземпляра не отображаются. ставит «Общий сбор за еду № {@ еда}» ставит «Сумма налога # @ taxAmount» ставит «Сумма наконечника # @ tipAmount» ставит «Общий счет» {@ totalBill} » – user3905353

+0

Это другой вопрос и отдельная проблема. Пожалуйста, отметьте мой ответ как правильный ответ на ваш вопрос относительно вашей синтаксической ошибки. –

+0

Чтобы решить свой второй вопрос, у вас есть некоторые серьезные проблемы с структурированием с кодом, который вы действительно должны решить. Но просто укажите, что ваши переменные (@tipAmount) не печатаются, потому что они ноль, а это значит, что они не инициализируются, прежде чем вы вызываете их в своем коде. –

Смежные вопросы