2013-10-25 78 views
0

我在jython中遇到了這個Random java事情的問題。我在python中編寫bukkit插件。下面的代碼:TypeError:nextDouble():自我arg不能被強制轉換爲java.util.Random

class hween(PythonPlugin): 
    def CandyChance(self): 
     chance = self.cfg.getDouble("main.candydropchance", 50)/100 #in config, it's 10, so I must do this to get it like 0.1... 
     return chance 

    @hook.event("block.BlockBreakEvent", "HIGHEST")   
    def onBlockBreakEvent(event): 
     chance = pyplugin.CandyChance() 
     print chance #When I print chance out, it's 0.1 (10 is in config) which is good I believe 
     if(Random.nextDouble("%s"%chance)): 
      #do something 
+0

您正在使用哪個版本的java? –

+0

@gamesbariniac這是jython,而不是java。 這是Jython的版本: Jython的獨立-2.5.3.jar 但如果你需要的Java版本,它的: V7,建1.7.0_17-B02 –

+0

更新到最新版本2.8 –

回答

0

這裏是再現您的錯誤一個交互式的Jython會話:

Jython 2.7b1 (default:ac42d59644e9, Feb 9 2013, 15:24:52) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0_25 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from java.util import Random 
>>> Random.nextDouble("0.1") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: nextDouble(): self arg can't be coerced to java.util.Random 
>>> Random.nextDouble() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: nextDouble(): expected 1 args; got 0 
>>> Random().nextDouble() 
0.3442604857098639 
>>> 

nextDouble()方法也不是一成不變的,它不帶任何參數。你將不得不重新思考你如何使用「這個隨機的java事物」(它不清楚你想要做什麼)。

+0

我試圖使機會,這是可配置的。例如,如果在confing中聲明爲50,則意味着該線下的所有內容都將有50%會發生,否則:... –

+0

我試過用getInt,然後用Random.nextInt(),但是我得到了相同的結果錯誤... –

+0

已修復!使用pythons random.randint(1,100)而不是jythons Random。 –

相關問題