我的问题是如何将数字序列放在一个JOptionPane窗口中。
我的代码会使每个数字得到一个新窗口。
一个完美的解决方案是给出结果1,2,3,.,n
import javax.swing.*;
public class Test{
public static void main (String[] cmer){
String xx,yy;
int n1,n2;
xx=JOptionPane.showInputDialog("Ingrese primer Numero");
n1=Integer.parseInt(xx);
yy=JOptionPane.showInputDialog("Ingrese primer Numero");
n2=Integer.parseInt(yy);
while (n1!=n2){
JOptionPane.showMessageDialog(null,n1+", ");
if (n1<n2){
n1++;
} else{
n1--;
}
}
}
}
发布于 2018-08-06 10:23:44
首先,你似乎正在调用多个输入对话框来收集来自用户的输入。我猜你会更喜欢JOptionPane对话框,所以我用了Confirm Dialog,并根据需要,在单个窗口中使用JPanel。
第二,你正在处理循环,这就是为什么message dialog中每个数字都会出现。若要解决此问题,只需在显示dialog之前(或作为)显示你放置在message dialog中的字符串,就像我在下面所做的那样。
下面是一个例子
import java.util.*;
import javax.swing.*;
public class Test{
public static void main (String[] cmer){
JTextField uno = new JTextField(10);
JTextField dos = new JTextField(10);
JPanel panel = new JPanel();
panel.add(new JLabel("Ingrese primer Numero"));
panel.add(uno);
panel.add(Box.createHorizontalStrut(10));
panel.add(new JLabel("Ingrese final Numero"));
panel.add(dos);
int result = JOptionPane.showConfirmDialog(null, panel,
"Escribir Números", JOptionPane.OK_CANCEL_OPTION); //write numbers
if (result == JOptionPane.OK_OPTION) {
int first = Integer.parseInt(uno.getText());
int last = Integer.parseInt(dos.getText());
List<Integer> listOfNumbers = new LinkedList<>();
for (int i=first; i < last + 1; i++){
listOfNumbers.add(i);
}
JOptionPane.showMessageDialog(null,
listOfNumbers.toString()
.replace("[", "")
.replace("]", ""));
}
}
}
https://stackoverflow.com/questions/-100001923
复制相似问题