带阵列的多个输入

时间:2013-03-18 20:05:15

标签: java arrays arraylist user-input joptionpane

我需要编写一个程序,根据当前年度帮助确定下一年“同行建议”的预算。将要求用户提供同伴顾问姓名及其获得的最高学位,以确定支付多少。我使用的是JOptionPane而不是Scanner,我还使用了ArrayList

用户是否有办法在一个输入中输入名称和度数,并将它们存储为两个不同的值,或者我将不得不有两个单独的输入对话框?示例:将名称存储为“Name1”,将度数存储为“Degree1”以计算其特定工资。

另外,我使用ArrayList,但我知道列表最多需要包含六(6)个元素,有没有更好的方法来做我想做的事情?

如果有必要的话,这就是我开始考虑之前的情况。

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

public class PeerTutoring
{
    public static void main(String[] args)
    {
        ArrayList<String> tutors = new ArrayList<String>();

        for (int i = 0; i < 6; i++)
        {
            String line = null;
            line = JOptionPane.showInputDialog("Please enter tutor name and their highest earned degree.");
            String[] result = line.split("\\s+");
            String name = result[0];
            String degree = result[1];
        }
    }
}

2 个答案:

答案 0 :(得分:1)

“用户是否有办法输入所有名称和学位  在一个输入中,但将它们存储为两个不同的值。“

是。例如,您可以要求用户输入以空格分隔的输入,并拆分结果:

String[] result = line.split("\\s+"); //Split according to space(s)
String name = result[0];
String degree = result[1];

现在你有两个变量的输入。

“我决定使用ArrayList,但我知道将要输入的名称数量(6),是否有更合适的数组方法?”

ArrayList很好,但是如果长度是固定的,那么使用可以使用固定大小的数组。


关于OP更新

你做错了,这应该是这样的:

ArrayList<String[]> list = new ArrayList<String[]>(6);
String[] splitted;
String line;
for(int i=0;i<6;i++) {
    line = JOptionPane.showInputDialog("Please enter tutor name and their highest earned degree.");
    splitted = line.split("\\s+");
    list.add(splitted);
}

for(int i=0;i<6;i++)
    System.out.println(Arrays.deepToString(list.get(i))); //Will print all 6 pairs

您应该创建一个ArrayList,其中包含一个表示输入的String数组(因为用户输入pair作为输入)。现在,您要做的就是将此对插入ArrayList

答案 1 :(得分:0)

您可以做的是将JOptionPane中的输入存储在String中,然后将String拆分为数组以存储输入的名称和度数。例如:

String value = null;
value =  JOptionPane.showInputDialog("Please enter tutor name and 
                 their highest earned degree.");

String[] tokens = value.split(" ");//if you input name followed by space followed by degree, this splits the input by the space between them
System.out.println(tokens[0]);//shows the name
System.out.println(tokens[1]);//shows the degree

现在,您可以使用tokens[0]将名称添加到列表中。