2015-06-03 39 views
-1
puts("This program is intended to tell you your letter grade, and if you passed or") 
puts("failed.") 
puts 
print("What was your grade for the class you are testing for?: ") 
grade = Integer(gets) 
puts 
print("What was the name of the class?: ") 
class = gets 
class = class.chomp 
puts 
if grade >= 90 
    puts 
    puts("You passed!") 
    puts 
    puts("Your letter grade for " + class + " is an A!") 
elsif grade >= 80 
    puts 
    puts("You Passed") 
    puts 
    puts("Your letter grade for " + class + " is a B.") 
elsif grade >= 70 
    puts 
    puts("You Passed") 
    puts 
    puts("Your letter grade for " + class + " is a C.") 
elsif grade >= 60 
    puts 
    puts("You Failed...") 
    puts 
    puts("Your letter grade for " + class + " is a D.") 
elsif grade < 60 
    puts 
    puts("You Failed...") 
    puts 
    puts("Your letter grade for " + class + " is a F...") 
else 
    puts 
    puts("It is not possible to get a negative grade. Please try again.") 
end 

這是爲了取用戶輸入,告訴用戶他們是否通過或失敗,以及他們的字母等級。許多重複的語法錯誤,沒有明顯的錯誤

的誤差主要是說「語法錯誤,意想不到的一元+」,「=」或「)」

+1

你能否粘貼實際的錯誤信息? – iamnotmaynard

+1

'class'是[關鍵字](http://ruby-doc.org/docs/keywords/1.9/),因此不是一個好的變量名稱。 – Blorgbeard

+1

澄清@Blorgbeard的評論,並不是說'class'不是一個_good_變量名,它是一個保留字,所以是一個_invalid_變量名。 'class'標記類定義的開始,它具有特定的語法;試圖將它用作變量名是語法錯誤。 – iamnotmaynard

回答

1

那麼首先改變class變量的名稱的東西有點不同像class_name防止奇怪的事情發生以後是你想用它來做更多的事情。

一元expresion只能使用one operand.的「一元錯誤」是最有可能是由於您使用的+標誌,以獨立的操作數給字符串參數的puts功能的方式,儘量保存在一個變量的字符串然後通過它作爲參數。

例子:

grade_a_announcement = "Your letter grade for " + class + " is an A!" puts(grade_a_announcement)

Furhtermore,作爲程序的建議,你必須覈對在多個場合變量使用case代替所有的if的作爲可見here in the "Ruby case Statement" section.

0

正如@Dimovict所說,「一元運算符」錯誤是因爲你寫了你的puts調用。更慣用的方式來獲得你想要的效果,雖然是使用字符串插值:

puts("Your letter grade for #{class} is an A!") 

這將插入class其中#{class}位於字符串中,並應刪除你得到的錯誤(除非你有更多的代碼你沒有顯示)。