带有解析双精度的 JOptionPane 输入正在向我的输入添加额外的 0

问题描述 投票:0回答:1

我只是使用 Double.parseDouble 和 JOptionPane 将字符串解析为双精度,要求用户输入。例如,当输入为 2 时,它只返回 20。

这是我的代码:

import java.util.ArrayList;
import javax.swing.*;


public class Main {
    public static void main(String[] args) {

        ArrayList<String> hermanas_nombres = new ArrayList<String>();
        ArrayList<Double> hermanas_edades = new ArrayList<Double>();

        for (int i = 0; i <=1 ; i++) {

            var nombre = JOptionPane.showInputDialog("Introduce el nombre de la hermana n " + i);
            hermanas_nombres.add(nombre);
            double edad = Double.parseDouble(JOptionPane.showInputDialog("Introduce la edad de la hermana ") + i);
            hermanas_edades.add(edad);
        }
        double media = ((hermanas_edades.get(0) + hermanas_edades.get(1))/2) ;

        for (int i = 0; i <=1 ; i++) {

            System.out.println("Nombre hermana número "+i+ " "+ hermanas_nombres.get(i));
            System.out.println("Edad hermana número "+i+ " "+ hermanas_edades.get(i));

        }
        System.out.println("Media de las edades: " + media);
    }
}

如您所见,当使用 JOption 窗格询问“edad”然后将其添加到数组列表时,它只会向用户输入添加一个额外的 0。

java parsing casting joptionpane
1个回答
0
投票

我怀疑错误在于

+ i
在此行上的放置:

            double edad = Double.parseDouble(JOptionPane.showInputDialog("Introduce la edad de la hermana ") + i);

目前,您正在将

i
添加到
JOptionPane.showInputDialog
返回的内容中。假设您输入
6
以响应包含消息
Introduce la edad de la hermana 
的输入对话框。 Java 将执行以下代码:

            double edad = Double.parseDouble("6" + i);

如果

i
为零,则
"6" + i
是字符串
"60"
,因为您正在执行字符串连接,而不是数字加法。这会导致
edad
的值末尾有额外的零。

我认为您想将

i
添加到
JOptionPane
中显示的消息末尾,而不是
showInputDialog
方法返回的内容。尝试将
+ i
移至行尾两个
)
字符中第一个字符的左侧:

            double edad = Double.parseDouble(JOptionPane.showInputDialog("Introduce la edad de la hermana " + i));
© www.soinside.com 2019 - 2024. All rights reserved.