Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带阵列的多输入_Java_Arrays_Arraylist_User Input_Joptionpane - Fatal编程技术网

Java 带阵列的多输入

Java 带阵列的多输入,java,arrays,arraylist,user-input,joptionpane,Java,Arrays,Arraylist,User Input,Joptionpane,我需要写一个计划,帮助根据当前年度确定下一年“同行建议”的预算。用户将被要求提供同行顾问的姓名和他们获得的最高学位,以确定支付给他们多少钱。我使用的是JOptionPane而不是Scanner,我还使用了ArrayList 是否有一种方法可以让用户在一个输入中同时输入名称和程度,并将它们存储为两个不同的值,或者我必须有两个单独的输入对话框?示例:将名称存储为“Name1”,将学位存储为“Degree1”,以便计算他们的具体工资 此外,我使用的是ArrayList,但我知道列表最多需要包含六(6)

我需要写一个计划,帮助根据当前年度确定下一年“同行建议”的预算。用户将被要求提供同行顾问的姓名和他们获得的最高学位,以确定支付给他们多少钱。我使用的是
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];
        }
    }
}
import java.util.ArrayList;
导入javax.swing.JOptionPane;
公共类远程登录
{
公共静态void main(字符串[]args)
{
ArrayList tutors=新的ArrayList();
对于(int i=0;i<6;i++)
{
字符串行=null;
line=JOptionPane.showInputDialog(“请输入导师姓名及其最高学位”);
字符串[]结果=line.split(\\s+);
字符串名称=结果[0];
字符串度=结果[1];
}
}
}

您可以将来自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
现在,您可以使用
标记[0]
将名称添加到列表中。

“是否有一种方法供用户同时输入名称和学位?” 在一个输入中,但将其存储为两个不同的值。“

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

String[] result = line.split("\\s+"); //Split according to space(s)
String name = result[0];
String degree = result[1];
现在您有了两个变量的输入

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

ArrayList
可以,但如果长度固定,use可以使用固定大小的数组


关于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 list=新的ArrayList(6);
字符串[]已拆分;
弦线;

对于(int i=0;我必须使用JOptionPane还是可以使用扫描仪?我们必须使用JOptionPane。读完我的书后,我觉得我可以使用多维数组。这可能吗?请参阅我提供的答案,希望它有帮助。这真的很有帮助。如果我想让用户在单独的对话框中输入名称和学位,我该如何做?F或者,让他们输入名称和程度,然后在点击“确定”后,让他们用不同的名称和程度重复相同的操作。我只需要设置一个循环吗?是的,只需设置一个循环。如果您发现答案有帮助,您可以将其勾选为主要答案:-)@MarounMaroun是否仍要在一个JOptionPane.showMessageDialog而不是六个单独的println中显示列表?迭代ArrayList并手动打印值,或者使用
System.out.println(Arrays.deepToString(list.get(i)).replaceAll(\\[\\],“”);
,如果有帮助,请接受答案