【发布时间】:2020-05-31 10:26:54
【问题描述】:
为什么我不能将 Musteri 类的 getBakiye() 函数作为参数传递给 Banka 类的 bakiyeBilgisi() 函数?我用谷歌搜索了几次,但我没有 要做的事情。我做了同样的事情 python 并且它起作用了此时 ruby 和 python 之间有什么不同?祝你有个美好的一天
我遇到了这个问题:
rb:122:in bakiyeBilgisi': undefined methodgetBakiye' for []:Array (NoMethodError)
class Musteri
attr_accessor :isim,:soyisim,:idno,:parola
def initialize(isim,soyisim,idno,parola)
@isim = isim
@soyisim = soyisim
@idno = idno.to_s
@parola = parola.to_s
@bakiye = 0
end
#=====================================
def getIsım #isim döndür
return @isim
end
def getSoyIsım #soyisim al
return @soyisim
end
def getIdNo #Idno al
return getIdNo
end
def getParola #parola al
return @parola
end
def getBakiye #bakiye al
return @bakiye
end
def setBakiye(miktar) #bakiye değiştir
@bakiye =miktar
return @bakiye
end
end #musteri sinifi bitişi
class Banka
attr_accessor :musteriler,:isim
def initialize(isim)
@isim = isim
@musteriler = []
end #yapici
def musteriVarmi(idno,parola)
for musteri in musteriler
if musteri.getIdNo == idno and musteri.getParola == parola
return musteri
end
end
end
def aliciVarmi(idno)
for musteri in @musteriler
if musteri.getIdNo == idno
return musteri
end #if blogunun
end #aliciVarmi for dongusu
end #aliciVarmi fonksiyonu
def paraAktar(gonderen,alici,miktar)
if @musteriler.include? gonderen and @musteriler.include? alici
if gonderen.getBakiye >= miktar
alici.setBakiye(alici.getBakiye + miktar)
puts "Gönderilme işlemi başarıyla gerçekleşti"
else
puts "Bakiye Yetersiz"
end #paraAktar ifS
else
puts "Alıcı Bulunamadı"
end #paraAktar ifS
end #paraAktar fonk
def musteriOl(isim,soyisim,idno,parola)
@musteriler<<(Musteri(isim,soyisim,idno,parola))
end #musteriOl fonk
def paraCek(musteri,miktar)
if miktar % 10 != 0
puts "Bozuk para atmayiniz"
else
if musteri.getBakiye >= miktar
puts "Önce paranizi\nSOnra kartinizi aliniz"
musteri.setBakiye(musteri.getBakiye + miktar)
else
puts "Bakiye yetersiz"
end #paracek elseS
end #paracek ifS
end #paracek fonk
def paraYatir(musteri,miktar)
if miktar % 5 != 0
puts "Bozuk para atmayiniz"
else
musteri.setBakiye(musteri.getBakiye + miktar)
puts "Paraniz Yatirildi"
end #paraYatir ifS
end #paraYatir fonk
def bakiyeBilgisi(musteri)
musteri.getBakiye
end #bakiyeBİlgisi fonk
end # Banka sinifi bitisi
def main
banka = Banka.new("UmutPalabiyik")
while true
system("cls")
puts "[1] Musteri Ol : "
puts "[2] Giriş Yap"
puts "Lutfen yapmak istediginiz islemi seciniz"
secim1 = gets.chomp()
if secim1 == "1"
puts "Lütfen isminizi giriniz : "
isim = gets.chomp.to_s
puts "Lütfen soyisminizi giriniz : "
soyisim = gets.chomp.to_s
puts "Lütfen id numaranizi giriniz : "
idno = gets.chomp.to_s
puts "Lütfen parolanızı giriniz : "
parola = gets.chomp.to_s
puts "Ana menuye donmek icin herhangi bir tusa basiniz"
gets.chomp()
elsif secim1 == "2"
puts "Lütfen id numaranizi giriniz :"
idno = gets.chomp.to_s
puts "Lütfen parolanizi giriniz :"
parola = gets.chomp.to_s
if banka.musteriVarmi(idno,parola)
musteri = banka.musteriVarmi(idno,parola)
while true
system("cls")
puts "[1] Bakiye Goster [2] Para Yatır"
puts "[3] Para Çek [4] Para Aktar"
puts " [Q] Cikis"
puts "Yapmak istediginiz islemi seciniz"
secim2 = gets.chomp()
if secim2 == "1"
banka.bakiyeBilgisi(musteri)
puts "Ana menüye dönmek için 'enter' a basiniz !"
gets.chomp()
elsif secim2 == "2"
puts "Lutfen yatırmak istediginz tutari seciniz : "
miktar = gets.chomp.to_i
banka.paraYatir(musteri,miktar)
puts "Ana menüye dönmek için 'enter' a basiniz !"
gets.chomp()
elsif secim2 == "3"
puts "Lütfen çekmek istediginiz miktarı giriniz : "
miktar = gets.chomp.to_i
banka.paraCek(musteri,miktar)
puts "Ana menüye dönmek için 'enter' a basiniz !"
gets.chomp()
elsif secim2 == "4"
puts "Alıcı ID :"
idno = gets.chomp()
puts "Aktarmak istediğiniz miktarı giriniz :"
miktar = gets.chomp().to_f
if banka.aliciVarmi(idno)
banka.paraAktar(musteri,banka.aliciVarmi(idno),miktar)
else
puts "Alici Bulunamadi !"
end #3.elsif ifS
elsif secim2 == "q" and secim2 == "Q"
puts "Ana menüye yönlendiriliyorsunuz"
sleep(0.5)
puts "."
sleep(0.5)
puts ".."
sleep(0.5)
puts "..."
break
else
puts "Hatalı Giriş"
puts "Ana menüye dönmek için herhangi bir tusa basiniz : "
gets.chomp()
end # 2. while true ifS
end #ikinci while true
else
puts "Banka kaydi bulunamadi ya da hatali giris"
end #elsif in ifS
else
puts "Hatali Giris"
end #ilk ifS
end #while true
end #main fonk
main
【问题讨论】:
-
您的问题存在严重问题。提问前请参观here。
-
现在好了吗?
-
请将您的代码以文本形式粘贴到此处。
-
如何重现用户应在控制台中输入的值。预期的输出是什么?
-
请参阅“How to Ask”、“Stack Overflow question checklist”和“MCVE”及其所有链接页面。