在java中拆分数组索引并将其存储到新数组中
我正在尝试输入一系列名称,并将它们存储到一个数组中,以便在需要时进行反转打印。比如说,
输入:
Bill Cosby[enter]
Jack Bob[enter]
输出:
Cosby, Bill
Jack, Bob
这就是我解决这个问题的方法,我决定先将所有名称存储到一个数组(_StudentNames
)中,然后计划在每个空间拆分数组,并将单独的名称存储到一个新数组(_StudentNamesSplit
),该数组的大小将是原来的两倍。之后,当需要打印一个名字时,我只需做一些类似
out.print(_StudentNamesSplit[1] + ", " + _StudentNamesSplit[0]);
我知道我遇到的问题是,使用此代码,只有输入的姓氏才会存储到数组中
我愿意接受任何关于解决这个问题的建议,特别是一种完全不同的方法。如果有一种方法可以将名称用逗号反转存储到数组的一个元素中,那就太好了,但这可能有点高级了
out.print("How many students are in the class? ");
int _numStudents = scanInt.nextInt();
String[] _StudentNames = new String[_numStudents];
String[] _StudentNamesSplit = new String[_numStudents * 2];
for (int i = 0; i < _numStudents; ++i)
{
_StudentNames[i] = scanString.nextLine();
_StudentNamesSplit = _StudentNames[i].split(" ");
}
# 1 楼答案
_StudentNamesSplit
必须是多维数组:然后分割时,将分割结果放在索引
i
处:当你写学生名字时,你是这样做的:
你也可以按照你最初设想的两倍大的阵列。它不起作用的原因是您将最后一次拆分的结果放在变量
_StudentNamesSplit
中,基本上替换了以前的数据。相反,您必须在数组中复制拆分结果。使用多维数组的方法要简单一些# 2 楼答案
如果您只需要一个名称颠倒的数组(例如“Cosby,Bill”),那么以下简短片段就足够了:
我正在使用
Collections#reverse()
和Joiner#join()
,但是当然,您可以使用任何其他方法代替它们# 3 楼答案
您不能用“,”按相反顺序组合字符串,并将其输入数组**\u StudentNamesSplit**。另外,由于无法确定数组的大小,我认为最好使用ArrayList来实现这一点。例如,你可以使用这样的东西
由于您不知道要输入多少行,最好使用ArrayList
# 4 楼答案
我建议你使用一个学生班(比如这个)——
您可以这样使用它(注意,它现在是无界的,
lastname, firstname
由Student.toString()
方法处理-# 5 楼答案
您只能使用一个数组来存储数据(它是否需要是数组?为什么不使用列表?)。然后,对输入的每个名称进行处理(就在输入时),并以所需格式存储它们。 然后,要打印所有元素,只需遍历数组并打印每个元素
顺便说一下,数组中的每个元素都可以包含空格,因此不需要创建一个比要插入的元素数量大两倍的数组