Ошибка в индексе String за пределами допустимого диапазона: 0. Я, честно говоря, даже не знаю, действительно ли то, что я делаю, в первую очередь.Я продолжаю получать ошибку String за пределами границ, может ли кто-то помочь исправить мой код?
Мне нужно создать метод wholeName и начальный метод. Их имена говорят сами за себя, в значительной степени wholeName печатает имя в зависимости от того, что пользователь дает мне. Если бы они дали мне только имя и фамилию, то это все, что я верну.
Инициалы - это тот же бит. Он берет первую букву из ввода имени и возвращает только инициалы. как Джон Ли Смит будет J.L.S.
Может ли кто-нибудь помочь мне понять, что не так? Если вы не можете сказать, что я новичок.
У меня есть программа тестера, который возвращает ошибку java.lang.StringIndexoutofboundexception: индекс Строка из диапазона: 0 в java.lang.String.charAt (String.java:658) в PersonName.Initials (PersonName .java: 131) atTestPersonName2.testOneName (TestPersonName2.java:50)
import java.util.StringTokenizer;
public class PersonName
{
private int numberOfNames ;
private String firstName;
private String middleName;
private String lastName;
private String suffixName;
PersonName(){
firstName="";
middleName="";
lastName="";
suffixName="";
numberOfNames=0;
}
public String getFirstName(){
return firstName;
}
public String getMiddleName(){
return middleName;
}
public String getLastName(){
return lastName;
}
public String getSuffixName(){
return suffixName;
}
public void setFirstName(String f){
if((f.length() == 0) && (firstName.length() == 0)){
numberOfNames = numberOfNames;
}else if((f.length() > 0) && (firstName.length() == 0)){
numberOfNames++;
}
firstName = f;
}
public void setMiddleName(String m){
if((m.length() == 0) && (middleName.length() == 0)){
numberOfNames = numberOfNames;
}else if((m.length() > 0) && (middleName.length() == 0)){
numberOfNames++;
}
middleName = m;
}
public void setLastName(String l){
if((l.length() == 0) && (lastName.length() == 0)){
numberOfNames = numberOfNames;
}else if((l.length() > 0) && (lastName.length() == 0)){
numberOfNames++;
}
lastName = l;
}
public void setSuffixName(String s){
if((s.length() == 0) && (suffixName.length() == 0)){
numberOfNames = numberOfNames;
}else if((s.length() > 0) && (suffixName.length() == 0)){
numberOfNames++;
}
suffixName = s;
}
public int getNumberOfNames(){
return numberOfNames;
}
PersonName(String wholename)
{ firstName=""; middleName=""; lastName=""; suffixName=""; numberOfNames=0;
// store the name passed in to the method
final int MAXNAMES = 4;
String [] words = new String [MAXNAMES];
String testname=wholename;
// initialize number of names found
int numnames=0;
// on each iteration remove one name
StringTokenizer st = new StringTokenizer(wholename);
while (st.hasMoreTokens()) {
words[numnames++]=st.nextToken();
}
if (numnames ==1)
{ setFirstName(words[0]);}
else if (numnames == 2)
{ setFirstName(words[0]);
setLastName(words[1]);
}
else if (numnames == 3)
{ setFirstName(words[0]);
setMiddleName(words[1]);
setLastName(words[2]);
}
else if (numnames == 4)
{ setFirstName(words[0]);
setMiddleName(words[1]);
setLastName(words[2]);
setSuffixName(words[3]);
}
}
public String EntireName(){
String EntireName = " ";
//String EntireName = getFirstName() + " " + getMiddleName() + " " + getLastName() + " " + getSuffixName();
if(getNumberOfNames() == 0){
EntireName = " ";
}else if(getNumberOfNames() == 1){
EntireName = getFirstName();
}else if(getNumberOfNames() == 2){
EntireName = getFirstName() + " " + getMiddleName();
}else if(getNumberOfNames() == 3){
EntireName = getFirstName() + " " + getMiddleName() + " " + getLastName();
}else {
EntireName = getFirstName() + " " + getMiddleName() + " " + getLastName() + " " + getSuffixName();
}
return EntireName;
}
public String Initials(){
String f = getFirstName();
char fChar = f.charAt(0);
String m = getMiddleName();
char mChar = m.charAt(0);
String l = getLastName();
char lChar = l.charAt(0);
String s = getSuffixName();
char sChar = s.charAt(0);
String initial = " ";
if(getNumberOfNames() == 0){
initial = " ";
}else if(getNumberOfNames() == 1){
initial = fChar + ".";
}else if(getNumberOfNames() == 2){
initial = fChar + "." + mChar + ".";
}else if(getNumberOfNames() == 3){
initial = fChar + "." + mChar + "." + lChar + ".";
}
//String initial = fChar + "." + mChar + "." + lChar ;
return initial;
}
}
Что это строка, которая бросает исключение? Вы даже пытались отлаживать себя? – nhahtdh
Я работаю над этим часами, так что да, я пробовал отлаживать. У меня есть программа-тестер, которая возвращает ошибку java.lang.StringIndexoutofboundexception: Индекс строки из диапазона: 0 в java.lang.String.charAt (String.java:658) в PersonName.Initials (PersonName.java:131) atTestPersonName2. testOneName (TestPersonName2.java:50) – 2013-04-10 01:39:12
опубликуйте код, который вызывает ошибку, а также сообщение об ошибке, чтобы мы могли помочь вам найти причину. –