どんな体でもこの問題を解決するのを手伝ってくれますか
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
これをコンパイルすると、数値形式の例外が表示されます。Javaの初期段階にあるので、これを解決するのを手伝ってください。ありがとうございます。
どんな体でもこの問題を解決するのを手伝ってくれますか
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
これをコンパイルすると、数値形式の例外が表示されます。Javaの初期段階にあるので、これを解決するのを手伝ってください。ありがとうございます。
Integer.parseInt
数式を評価しません。整数の文字列形式を整数型に変換するだけです。
例えば:
int x = 5;
int y = Integer.parseInt("5");
x == y; // => true
のような数式を評価する1.3 * 60 = ?
には、Javaの数学解析/評価ライブラリを検索することをお勧めします。(たとえば、この質問を参照してください)
このコードを確認してください:
String expr ="1.3*60";
String[] tokens = expr.split("\\*");
float j = Float.parseFloat(tokens[0]);
float k = Float.parseFloat(tokens[1]);
System.out.println(j);
System.out.println(k);
System.out.println(j*k);
したがって、最初に通常の式を使用してトークン化する必要があります(これについては説明しません)。これが分割部分です。次に、解析している数値の一部は整数ではないため、floatまたは対応する型を使用するか、try/catchsなどを使用して非int値を無視する必要があります。そして最後に、valueOfはオブジェクトを返し、parseXはプリミティブを返します。これが必要なものだと思います。
String[] tokens = expr.split(delims);
...
int i = Integer.parseInt(expr);
すでに文字列を float と int に分割しているので、元の文字列 "expr" の代わりに "tokens[0]" と "tokens[1]" 文字列を parseInt() に渡す必要があります。これらの文字列はフロートであるため、それが機能するかどうかはわかりません。
jdk 1.6 を使用している場合は、組み込みの JavaScript エンジンを使用して式を評価できます。
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class expressionEvaluate{
public static void main(String[] args) throws Exception{
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine scriptEngine = sem.getEngineByName("JavaScript");
String expr = "1*3+5";
System.out.println(scriptEngine.eval(expr));
}
}