我正在hackerrank.com上尝试编程问题并使用Java语言。
部分问题要求我按字符/
分割字符串。
我在Java中遇到了这样的问题。
给定输入:
cu/a/ca ha/ri i/tu san/gat se/juk
我的代码(Java):
Scanner input = new Scanner(System.in);
String source = input.next();
String[] inputchar = source.split("/");
for (int i = 0; i < inputchar.length; i++){
System.out.print(inputchar[i] + "\n");
}
结果:
cu
a
ca
但是,我期待以下输出:
cu
a
ca ha
ri i
tu san
gat se
juk
但是,当我尝试使用以下C#代码时,它给了我正确的结果。
String source = Console.ReadLine();
String[] slashchar = source.Split('/');
for (int k = 0; k < slashchar.Length; k++)
{
Console.WriteLine(slashchar[k]);
}
我注意到带有间隔的字符串无法使用我的Java代码正确拆分。
上面的Java代码是否有任何错误?
答案 0 :(得分:3)
更改为String source = input.nextLine();
而不是String source = input.next();
因为input.next()
返回字符串直到空格,input.nextLine
会返回字符串直到新行。
答案 1 :(得分:3)
您的扫描程序在空格上执行了一些标记化。所以你没有用
读完整行input.next();
你只能读到第一个空白。
替换为
input.nextLine();
再试一次。
答案 2 :(得分:2)
使用java尝试使用nextLine()
,如下所示:
Scanner input = new Scanner(System.in);
String source = input.nextLine();
String[] inputchar = source.split("/");
for (int i = 0; i < inputchar.length; i++){
System.out.print(inputchar[i] + "\n");
}