我需要编写一个程序,根据当前年度帮助确定下一年“同行建议”的预算。将要求用户提供同伴顾问姓名及其获得的最高学位,以确定支付多少。我使用的是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];
}
}
}
答案 0 :(得分:1)
“用户是否有办法输入所有名称和学位 在一个输入中,但将它们存储为两个不同的值。“
是。例如,您可以要求用户输入以空格分隔的输入,并拆分结果:
String[] result = line.split("\\s+"); //Split according to space(s)
String name = result[0];
String degree = result[1];
现在你有两个变量的输入。
“我决定使用ArrayList,但我知道将要输入的名称数量(6),是否有更合适的数组方法?”
ArrayList
很好,但是如果长度是固定的,那么使用可以使用固定大小的数组。
你做错了,这应该是这样的:
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]
将名称添加到列表中。