0

どんな体でもこの問題を解決するのを手伝ってくれますか

String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);

これをコンパイルすると、数値形式の例外が表示されます。Javaの初期段階にあるので、これを解決するのを手伝ってください。ありがとうございます。

4

5 に答える 5

7

Integer.parseInt数式を評価しません。整数の文字列形式を整数型に変換するだけです。

例えば:

int x = 5;
int y = Integer.parseInt("5");

x == y; // => true

のような数式を評価する1.3 * 60 = ?には、Javaの数学解析/評価ライブラリを検索することをお勧めします。(たとえば、この質問を参照してください

于 2012-10-30T03:20:40.440 に答える
3
"1.3*60";

は有効ではありませんinteger

Integer.parseInt(...);有効な整数のみを解析できます

式評価エンジンを使用する場合。これこれを参照してください

于 2012-10-30T03:19:16.183 に答える
0

このコードを確認してください:

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はプリミティブを返します。これが必要なものだと思います。

于 2012-10-30T03:42:42.180 に答える
0
String[] tokens = expr.split(delims);
...
int i = Integer.parseInt(expr);

すでに文字列を float と int に分割しているので、元の文字列 "expr" の代わりに "tokens[0]" と "tokens[1]" 文字列を parseInt() に渡す必要があります。これらの文字列はフロートであるため、それが機能するかどうかはわかりません。

于 2012-10-30T03:26:29.690 に答える
0

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));
    } 
}
于 2012-10-30T07:10:55.003 に答える