2017-04-04 10 views
1

Ich mache die Rätsel bei Codingame.com und ich mache sie in Groovy. Und ich stoße auf ein verwirrendes Problem. Hier ist die Datei, die Sie bekommen Ihr Programm in (einige nicht relevanten Code weggelassen) zu setzen:Kann ich keine Klassendeklarationen in ein Groovy-Skript einfügen?

input = new Scanner(System.in); 

/** 
* Auto-generated code below aims at helping you parse 
* the standard input according to the problem statement. 
**/ 

lightX = input.nextInt() // the X position of the light of power 
lightY = input.nextInt() // the Y position of the light of power 
initialTX = input.nextInt() // Thor's starting X position 
initialTY = input.nextInt() // Thor's starting Y position 

fartherThanPossible = 100 

class Point { 
    Integer x 
    Integer y 
    Integer distanceFromTarget = fartherThanPossible 
} 

def currentPos = new Point(x: initialTX, y: initialTY) 

Was passiert, ist, dass, sobald ich versuche, um die Klasse zu instanziieren, eine Ausnahme in der letzten Zeile in dem geworfen wird Codeblock oben. Die Ausnahme selbst ist nicht sehr hilfreich, und ich nehme an, das liegt daran, dass die Datei als Skript ausgeführt wird?

at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53) 
at Answer.run on line 28 

Darf ich eine Klassendeklaration in ein Groovy-Skript einfügen? Die Dokumentation scheint zu sagen, dass ich, soweit ich das beurteilen kann.

+0

Mit dem obigen Code zu sehen 'Keine solche Eigenschaft: fartherThanPossible für Klasse: Point' . Übrigens, es ist sehr gültig. – Rao

+0

Fylke, bitte nachsehen, ob das unten zu der Frage – Rao

Antwort

1

Ja, es ist gültig, Klasse in einem Skript zu haben.

Wenn Ihr Skript ausgeführt wird die folgende Ausgabe:

$ groovy testthor.groovy 
7 
8 
8 
9 
Caught: groovy.lang.MissingPropertyException: No such property: fartherThanPossible for class: Point 
groovy.lang.MissingPropertyException: No such property: fartherThanPossible for class: Point 
    at Point.<init>(testthor.groovy) 
    at testthor.run(testthor.groovy:21) 

Und das ist wegen falscher Aussage in der letzten Zeile der Klassendefinition.

einfach das Skript unten ändern das Problem zu beheben:

input = new Scanner(System.in) 

/** 
* Auto-generated code below aims at helping you parse 
* the standard input according to the problem statement. 
**/ 

lightX = input.nextInt() // the X position of the light of power 
lightY = input.nextInt() // the Y position of the light of power 
initialTX = input.nextInt() // Thor's starting X position 
initialTY = input.nextInt() // Thor's starting Y position 

fartherThanPossible = 100 
//Added 
@groovy.transform.ToString 
class Point { 
    Integer x 
    Integer y 
    //changed 
    Integer distanceFromTarget 
} 

def currentPos = new Point(x: initialTX, y: initialTY, distanceFromTarget: farther 
ThanPossible) 
//Added 
println currentPos.toString() 

und Ausgang:

$ groovy testthor.groovy 
87 
88 
8 
99 
Point(8, 99, 100) 
+0

hilft Danke, ich werde es versuchen, wenn ich nach Hause komme! Ich wollte der distanceFromTarget-Variable einen Standardwert geben, ist das dann nicht möglich? – Fylke

Verwandte Themen