0

私はこのコードを持っています:

static def parseString(String inputRow, Particle particle) {
        //input row is:
        //static final inputRow = "1 -5.2 3.8"
        def map = inputRow.split()
        particle.mass = Integer.parseInt(map[0])
        particle.x = Integer.parseInt(map[1])
        particle.y = Integer.parseInt(map[2])
}

このコードはこのエラーをスローしています:

java.lang.NumberFormatException: For input string: "-5.2"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.valueOf(Integer.java:582)
    at RepulsionForce.parseString(RepulsionForce.groovy:13)
    at RepulsionForceTest.string should be parsed into particles(RepulsionForceTest.groovy:27)

この例外を回避するにはどうすればよいですか?

4

4 に答える 4

1

ここにそれを行う1つの方法があります...完全なソリューション内で答えてください:

// setup
class Particle {
    def mass
    def x
    def y
}

def particle = new Particle()
def inputRow = "1 -5.2 3.8"
def fieldsByIndex = [0: "mass", 1: "x", 2: "y"]

// answer
inputRow.split().eachWithIndex { val, index ->
    def field = fieldsByIndex.get(index)
    particle."${field}" = val.toDouble()
}

// output
println "mass :  " + particle.mass
println "x :  " + particle.x
println "y :  " + particle.y
于 2013-09-24T02:04:10.787 に答える
0

説明:誤って倍精度数を整数値に解析しようとしましたが、適用できず、同じ型 (整数!=倍精度) を共有しておらず、機能しません。したがってjava.lang.NumberFormatException: For input string、型の問題を明示的に通知する例外が発生します。

解決策Double: Classを使用して double に変換します。

Double.parseDouble(map[i])
于 2020-05-18T13:43:11.943 に答える