Java 从GUI中拆分数组

Java 从GUI中拆分数组,java,arrays,Java,Arrays,如何拆分数组?这是一个addStudent方法,它接受一系列已经从GUI中学习、正在学习、将要学习的课程 public void addStudent(String firstName, String lastName, String phone, String address, double gpa, String major, String[] haveTaken, String[] taking, String[]toBeTaken, int crdit){ String[

如何拆分数组?这是一个addStudent方法,它接受一系列已经从GUI中学习、正在学习、将要学习的课程

public void addStudent(String firstName, String lastName, String phone, String address, double gpa, String major, String[] haveTaken, String[] taking, String[]toBeTaken, int crdit){
        String[] taken = haveTaken.split(","); //this part screams at me
        Person temp = 
           new Student(firstName, lastName, phone, address, gpa, major, haveTaken, taking, toBeTaken, credit);
        p.add(temp);
    }

或者……也许你要找的是这样的东西:

String[] taken = Arrays.toString(hasTaken).replace("[","").replace("]","").split(", ");
split()参数中逗号后的空格不是打字错误。方法在每个delimter之后放置一个空格

编辑:

好的,詹姆斯,我刚刚注意到你的评论:


我正在使用GUI输入数据。在收到来自 havetake.getText(),课程的数组字符串必须为 分裂例如[CST141,CST161,CST323]

这里是混乱的地方,您声明了名为addStudent()方法的参数havetake作为字符串数组,但在您的注释中,您告诉用户您从支持.getText()方法的GUI组件获取数据,可能类似于JTextField。但是,您再次向我们展示了一个数据字符串,它实际上是array.toString()方法([CST141,CST161,CST323])的返回输出

是哪一个???

havetake变量实际上是字符串数组变量还是GUI组件的变量名

如果havetake实际上是一个字符串数组变量,那么我上面发布的代码将适用于您,但是有更明确的方法可以将一个数组内容复制到另一个数组中,例如使用“for loop”、.clone()System.arraycopy()Arrays.copyOf())

但是,如果havetake变量表示GUI组件的变量名,并且您正在将该组件中提供的分隔文本调用为数组,则…停止执行该操作并停止 将该组件中的文本表示为addStudent()方法的字符串数组参数。 它应该是:…,字符串已被占用不是…,字符串[]已接受。。。。现在答案也会改变,因为在执行拆分之前,您可能需要采取一些格式化预防措施。如果没有提供一个或多个逗号分隔符怎么办?在每个逗号分隔符之前或之后放置空格(可能有多个)?这种格式化应该在数据输入级别进行,以确保处理的格式一致

我非常怀疑您是否希望用户以以下方式提供文本字段组件中的数据:[CST141、CST161、CST323]。如果你是…那么也停止,因为它很容易出现输入错误。但是,如果文本字段组件中提供的数据是这样的:CST141、CST161、CST323,那么您最初的拆分尝试应该已经成功了


我相信大家都想知道一个大问题:“为什么要拆分字符串数组?”知道这一点肯定会给您带来满意的结果。

拆分
是一种
字符串
而不是
字符串[]
havetake看起来像什么?您想做什么?为什么要拆分阵列?我正在使用GUI输入数据。从havetake.getText()接收数据后,必须拆分课程的数组字符串。例如[CST141、CST161、CST323]“如何拆分数组”?数组已经被拆分。也许你想拆分数组的元素。这可能有效,但什么也不做。为什么要拆分刚加入的数组?考虑到“for循环”、.clone()、System.arraycopy()或Arrays,@Aaron显然有点奇怪。copyOf()足以复制一个数组,这基本上就是在这种特殊情况下所做的一切。我想这有点像是和“你为什么在擤鼻涕后还要挖鼻子”联系在一起的。但讽刺的是,将要复制的数组放入一个字符串中,然后将其拆分,无论出于何种原因,都会打开split()的所有功能。可能是为了摆脱捕获初始数组(.split(“,CST323”))的booger。