0

我需要编写一个程序,帮助根据当年确定下一年“同行建议”的预算。将要求用户提供同行顾问的姓名和他们获得的最高学位,以确定支付给他们的金额。我正在使用 aJOptionPane而不是,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];
        }
    }
}
4

2 回答 2

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包含将表示输入的字符串数组(因为用户输入 pair 作为输入)。现在,您所要做的就是将这对插入到ArrayList.

于 2013-03-18T20:17:28.730 回答
0

您可以做的是将 JOptionPane 的输入存储在一个字符串中,然后将该字符串拆分为一个数组以存储输入的名称和学位。例如:

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]将名称添加到您的列表中。

于 2013-03-18T20:16:39.257 回答