0
Scalaを使用して二次方程式の根を見つけるプログラムを作成しようとしています。入力は、文字列としてax^2 + bx + cの形式の2次方程式(例えば、5x^2 + 2x + 3)でなければなりません。Scalaで文字列として入力された二項式の係数を抽出する
私は根の計算をコード化することができましたが、入力から係数を抽出することができませんでした。ここで私は、これまでの係数を抽出するために書いたコードは次のとおりです。正規表現と
def getCoef(poly: String) = {
var aT: String = ""
var bT: String = ""
var cT: String = ""
var x: Int = 2
for (i <- poly.length - 1 to 0) {
val t: String = poly(i).toString
if (x == 2) {
if (t forall Character.isDigit) aT = aT + t(i)
else if (t == "^") {i = i + 1; x = 1}
}
else if (x == 1) {
if (t forall Character.isDigit) bT = bT + t(i)
else if (t == "+" || t == "-") x = 0
}
else if (x == 0) {
if (t forall Character.isDigit) cT = cT + t(i)
}
val a: Int = aT.toInt
val b: Int = bT.toInt
val c: Int = cT.toInt
(a, b, c)
}
}
正規表現の使用について考えましたか?あなたの入力文字列がどのくらい複雑になっているかは分かりませんが、問題は解析されており、正規表現や多分Scalaパーサーコンビネータのような優れた解決策があります。 – stholzm
str.split( 'x')。map(v => v.replace( "^ 2"、 ""))map(_。toDouble) – FatTail
もしあなたが正規表現を大切にしていて、説明する。 – FatTail