涉及substring()和charAt()方法的Java程序

时间:2013-09-24 19:46:49

标签: java loops methods substring charat

我的程序应打印出姓名的首字母并打印姓氏。 例如。如果输入的名字是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));
}

3 个答案:

答案 0 :(得分:1)

这是罪魁祸首:

        spacel=i+1;
        System.out.print(w.charAt(spacel) + " ");

i等于l - 1时,space1将等于lw.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));
    }
    }