美好的一天,伙计们, 我正在制作一个程序,要求我输入一个名字(例如Patrick-Connor-O'Neill)。名称可以由尽可能多的名称组成,因此不一定仅限于3,如上例所示。但程序的要点是返回首字母,因此在本例中为PCO。我写信要求澄清一下。我需要首先将名称与连字符分开,对吧?然后我需要取名字的第一个字符并将其打印出来? 无论如何,我的问题基本上是如何分离字符串,如果我不知道输入了多少?我明白,如果它只是我会做的两个术语:
final String s = "Before-After";
final String before = s.split("-")[0]; // "Before"
我确实尝试过编写代码,到目前为止我所拥有的只是:
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
String[] x = input.split("-");
int u =0;
for(String i : x) {
String y = input.split("-")[u];
u++;
}
}
}
我正在参加编程的速成课程,所以简单的概念对我来说很难。谢谢阅读!
答案 0 :(得分:1)
您无需再次拆分它。通过执行String[] x = input.split("-");
,你有一个字符串数组。现在,您可以使用增强的for循环迭代它们。看起来应该是这样的
String[] x = input.split("-");
String initials = "";
for (String name : x) {
initials += name.charAt(0);
}
System.out.println(initials);
以下是使用方法的一些Java文档
答案 1 :(得分:1)
您可以在不拆分字符串的情况下使用String.indexOf
查找下一个-
;然后将后续字符附加到首字母:
String initials = "" + input.charAt(0);
int next = -1;
while (true) {
next = input.indexOf('-', next + 1);
if (next < 0) break;
initials += input.charAt(next + 1);
}
(这里没有处理很多边缘情况;省略了处理方法的要点)。
答案 2 :(得分:0)
这可能会有所帮助
String test = "abs-bcd-cde-fgh-lik";
String[] splitArray = test.split("-");
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < splitArray.length; i++) {
stringBuffer.append(splitArray[i].charAt(0));
}
System.out.println(stringBuffer);
}
使用StringBuffer会将内存保存为,如果使用String,每次修改时都会创建一个新对象。
答案 3 :(得分:0)
在for-each
循环中,将String数组的所有元素的第一个字符追加到输出String中以获取首字母:
String output = "";
for(String i : x) {
output = output + y.charAt(0);
}
答案 4 :(得分:0)
这会有所帮助。
public static void main(String[] args) {
String output = "";
String input = "Patrick-Connor-O'Neil-Saint-Patricks-Day";
String[] brokenInput = input.split("-");
for (String temp : brokenInput) {
if (!temp.equals(""))
output = output + temp.charAt(0);
}
System.out.println(output);
}
答案 5 :(得分:0)
你可以完全尝试这样的东西(你的代码的一点重构):
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = "";
System.out.println("What's your name?");
input = scan.nextLine();
String[] x = input.split("-");
int u =0;
for(String i : x) {
String y = input.split("-")[u];
u++;
System.out.println(y);
}
}
}
如果您想简单地分隔首字母,我认为从这里开始非常容易和直截了当。如果您是Java新手,请确保使用大量的System.out,因为它可以帮助您进行大量的调试。
良好的编码。
编辑:如果你作弊,你可以使用@Mohit Tyagi的答案来实现全部:P