使用 charAt 的字符串索引越界
String Index Out of Bounds with charAt
作为一个学校项目,我被要求制作一个程序来显示您输入的姓名的首字母(例如。对于 Akshat Abhay Shetye,它将显示 A. A. Shetye)。
这在我的学校 PC 上工作正常,运行 是旧的 bluej 和 Java 但是当我 运行 它时抛出错误(StringIndexOutOfBoundsException:字符串索引超出范围)。
这是我的程序:
import java.util.*;
import java.lang.*;
public class dispInitials{
public static void main (String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Enter your full name");
String name = sc.next();
//name = name.trim();
String inName= name.charAt(0)+". ";
int i = 1;
for(i=1;i<(name.length()-1);i++){
if(Character.isWhitespace(name.charAt(i)))
break;
}
i++;
inName=inName+name.charAt(i)+". ";
for(i=i;i<name.length();i++){
if(Character.isWhitespace(name.charAt(i)))
break;
}
i++;
System.out.println("The name is "+inName);
}
}
谁能解释错误(第 16 行)?
for(i=1;i<(name.length()-1);i++)
所以,当循环停止时,i
等于name.length - 1
那么,你在做
i++;
inName = inName+name.charAt(i)+". ";
所以您正在尝试访问索引 name.length
处的字符。但是没有这样的索引。最后一个有效索引是 name.length - 1
。因此例外。
您需要学习使用调试器并逐行调试代码,同时检查变量的值。或者至少在代码中添加 System.out.println()
指令来诊断您的问题。这基本上是开发人员的日常工作。
你的名字输入错误。
用此代码替换您的输入行:
String name = sc.nextLine();
作为一个学校项目,我被要求制作一个程序来显示您输入的姓名的首字母(例如。对于 Akshat Abhay Shetye,它将显示 A. A. Shetye)。
这在我的学校 PC 上工作正常,运行 是旧的 bluej 和 Java 但是当我 运行 它时抛出错误(StringIndexOutOfBoundsException:字符串索引超出范围)。 这是我的程序:
import java.util.*;
import java.lang.*;
public class dispInitials{
public static void main (String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Enter your full name");
String name = sc.next();
//name = name.trim();
String inName= name.charAt(0)+". ";
int i = 1;
for(i=1;i<(name.length()-1);i++){
if(Character.isWhitespace(name.charAt(i)))
break;
}
i++;
inName=inName+name.charAt(i)+". ";
for(i=i;i<name.length();i++){
if(Character.isWhitespace(name.charAt(i)))
break;
}
i++;
System.out.println("The name is "+inName);
}
}
谁能解释错误(第 16 行)?
for(i=1;i<(name.length()-1);i++)
所以,当循环停止时,i
等于name.length - 1
那么,你在做
i++;
inName = inName+name.charAt(i)+". ";
所以您正在尝试访问索引 name.length
处的字符。但是没有这样的索引。最后一个有效索引是 name.length - 1
。因此例外。
您需要学习使用调试器并逐行调试代码,同时检查变量的值。或者至少在代码中添加 System.out.println()
指令来诊断您的问题。这基本上是开发人员的日常工作。
你的名字输入错误。
用此代码替换您的输入行:
String name = sc.nextLine();