2015-02-07 87 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

這將是超級,如果你可以重新格式化,以便適當的東西被標記爲代碼。 :)另外,如果這是實際的代碼,那裏有非常多的結束。 :) – 2015-02-07 19:36:31

+0

真的不清楚你想要做什麼。您在結束語中肯定會遇到一些問題,但不止於此。例如,您是否真的希望在CustomerBill內部定義賬單類? – nPn 2015-02-07 19:37:44

+1

@DavidHoelzer從格式化很難判斷,但實際上並沒有足夠的_ends_。 – 2015-02-07 20:57:09

回答

1

正如heading_to_tahiti的回答指出,你有一個缺少結束聲明,但除了你完全誤解在Ruby中使用類。你想要做的只是這個:

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 2015-02-07 20:40:03

+0

@ user3905353。你剛剛從我的答案中刪除了正確的答案。由於nPn解決方案確實會產生結果,因此它不會直接解決您的問題根源中的語法錯誤,這是「輸入輸入結束時出現錯誤」的語法錯誤。我立即爲你提供了正確的答案。在解決了你的問題後,你用一個單獨的問題評論了我的答案,其中一個變量沒有被初始化,我也解決了這個問題。 – 2015-02-07 20:52:24

+0

@ user3905353 - 只是想爲我以前的評論添加更多的上下文。 SO旨在幫助解決編程問題並建立一個解決方案庫。在這個例子中,你發佈瞭如何解決「語法錯誤,意外tIVAR,期待輸入結束」的問題,通過添加缺少的「結束」語句來解決。其他搜索SO類似問題的新手程序員無法通過簡單地刪除類和方法定義來解決此問題。這根本不是你發佈的問題的真實世界的解決方案。 – 2015-02-08 02:37:12

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」 放入「Tip amount#@ tipAmount」 puts「Total bill#{@ totalBill}」 – user3905353 2015-02-07 19:59:57

+0

這是另一個問題和單獨的問題。請將我的答案標記爲關於您的語法錯誤的正確答案。 – 2015-02-07 20:11:22

+0

要解決您的第二個問題,您有一些與代碼有關的重大結構問題,您應該真正解決。但簡單地說,你的變量(@tipAmount)不打印,因爲它們是零,這意味着它們在你的代碼中調用它們之前沒有被初始化。 – 2015-02-07 20:13:05

相關問題