我的程序应打印出姓名的首字母并打印姓氏。 例如。如果输入的名字是Mohan Das Karamchand Gandhi,输出必须是MDK Gandhi。虽然我得到“String index out of range”异常。
import java.util.Scanner;
public class name {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("Enter a string");
String w=s.nextLine();
int l=w.length();
char ch=0; int space=0;int spacel = 0;
for(int i=0;i<l;i++){
ch=w.charAt(i);
if(ch==32||ch==' '){
space+=1;
spacel=i+1;
System.out.print(w.charAt(spacel) + " ");
}
}
System.out.println(w.substring(spacel,l+1));
}
答案 0 :(得分:1)
这是罪魁祸首:
spacel=i+1;
System.out.print(w.charAt(spacel) + " ");
当i
等于l - 1
时,space1
将等于l
或w.length()
,这超出了字符串的结尾
答案 1 :(得分:0)
这可以使用String的split()方法或使用StringTokenizer轻松实现。
首先使用空格作为分隔符拆分字符串。然后根据您的格式,最后一个字符串将是Last Name并迭代其他字符串对象以获取初始字符。
String name = "Mohan Das Karamchand Gandhi";
String broken[] = name.split(" ");
int len = broken.length;
char initials[] = new char[len-1];
for(int i=0;i<len-1;i++) {
initials[i] = broken[i].charAt(0);
}
String finalAns = new String(initials)+" "+broken[len-1];
答案 2 :(得分:0)
import java.util.Scanner;
public class name
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("Enter a string");
String w=s.nextLine();
int l=w.length();
char ch=0; int space=0;int spacel = 0;
System.out.print(w.charAt(0) + " ");
for(int i=0;i<l;i++)
{
ch=w.charAt(i);
if(ch==32||ch==' ')
{
space+=1;
spacel=i+1;
System.out.print(w.charAt(spacel) + " ");
}
}
System.out.println("\b\b"+w.substring(spacel,l));
}
}