0

.jsp ページを作成していますが、それに関するエラーが表示されます。

        String energyv="";

        int number= Integer.parseInt(request.getParameter("number"));
        energyv="_"+number;
    *
    *
    *
        if (tokenNumber == 2 && found && value1.equals("")) {
        value1= nextToken;
        if (value1.equals(""))
        found = false;

        }

        if (tokenNumber == 3 && found && value2.equals("")) {
        value2= nextToken;

        }

*
*
*
        Double activeTotalLong = Double.valueOf( "value" + energyv );

*
*
*

これを行おうとすると、Tomcat エラーが発生します。

2012 年 8 月 2 日 11:17:30,097 ERROR http-8080-4 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/PlantVisorPRO].[jsp] - サーブレット jsp の Servlet.service() がスローされました例外 java.lang.NumberFormatException: 入力文字列の場合: java.lang.Double.valueOf(Double.java:475) の sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224) の「value2」

Java は値 (value2 や value1 など) を作成できますが、文字列の問題を修正するにはどうすればよいですか?

4

1 に答える 1

2
Double activeTotalLong = Double.valueOf( "value" + energyv );

このメソッドは、文字列で表された有効な数値を取ります。

"value2" は有効な数値形式ではありません。

Double.valueOf() の使用例:

Double d;
d = Double.valueOf("23.72");
d = Double.valueOf("-1.247002");
d = Double.valueOf("1e9"); // e  =    *10^()

したがって、あなたがやろうとしているのは、value2またはの値を取得することですvalue1。そして、あなたが実際に書いたのは

   "value" + 2
=  "value2"    // This is a string! not a variable!

したがって、これを解決するには、次の 2 つのオプションがあります。

  • 配列を使用する
  • if-else を使用する

配列の使用:

String values[] = new String[2];
values[0] = value1;
values[1] = value2;
Double.valueOf(values[energyv - 1]);

if-else の使用:

Double activeTotalLong;
if (energyv == 1)
{
    activeTotalLong = Double.valueOf(value1);
} else if (energyv == 2)
{
    activeTotalLong = Double.valueOf(value2);
}
于 2012-08-02T09:13:27.490 に答える