我只是使用 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。
我怀疑错误在于
+ 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));