2012-09-12 2 views
0

Possible Duplicate:
String index out of range: n문자열 지수는 7

나는 사용자의 입력 (처음, 중간, 마지막 이름)의 기반으로 사용자 이름을 생성하는 프로그램을 쓰고 있어요. 사용자 이름을 생성하기 위해 각 이름 (첫 번째, 중간 및 마지막)과 마지막 이름의 마지막 문자를 가져와야합니다. 나는 각 이름의 첫 번째 문자를 생성하는 프로그램을 성공적으로 작성했지만, 마지막 이름의 마지막 문자를 생성하도록 프로그램을 만들려고하면이 오류가 발생합니다.

스레드 "main"java의 예외 .lang.StringIndexOutOfBoundsException : 범위를 벗어 문자열 인덱스 : 사전에

import java.util.Scanner; 
    /** 
    UsernameGenerator.java 
    Generates a username based on the users inputs. 
    @author: Evan Fravert 
    */ 
public class UsernameGenerator { 
/** 
    * Generates a username based on the users inputs. 
    *@param args command line argument 
    */ 
    public static void main(String[] args) 
{ // abcde 
    String first; 
    String middle; 
    String last; 
    String password1; 
    String password2; 
    int randomNum; 
    randomNum = (int) (Math.random() * 1000) + 100; 
    Scanner userInput = new Scanner(System.in); 
    System.out.println("Please enter your first name:"); 
    first = userInput.nextLine(); 
    String firstLower = first.toLowerCase(); 
    System.out.println("Please enter your middle name:"); 
    middle = userInput.nextLine(); 
    String middleLower = middle.toLowerCase(); 
    System.out.println("Please enter your last name:"); 
    last = userInput.nextLine(); 
    int lastEnd = last.length(); 
    String lastLower = last.toLowerCase(); 
    System.out.println("Please enter your password:"); 
    password1 = userInput.nextLine(); 
    System.out.println("Please enter your password again:"); 
    password2 = userInput.nextLine(); 
    char firstLetter = firstLower.charAt(0); 
    char middleLetter = middleLower.charAt(0); 
    char lastLetter = lastLower.charAt(0); 
    char lastLast = lastLower.charAt(lastEnd); 
    if (first == null || first.length() <= 0) { 
     firstLetter = 'z'; 
    } 
    else { 
    firstLetter = firstLower.charAt(0); 
    } 
    System.out.println("Your username is " + firstLetter + "" 
    + middleLetter + "" + lastLetter + "" + "" + lastLast + "" + randomNum); 
    System.out.println("Your password is " + password1); 
    System.out.println("Welcome " + first + " " + middle + " " + last + "!"); 
    } 
    } 

감사 : 7

다음
at java.lang.String.charAt(String.java:658) 
at UsernameGenerator.main(UsernameGenerator.java:39) 

내 코드입니다!

+1

: http://stackoverflow.com/q/9020859/ 422353 – madth3

답변

4

자바 배열이 제로를 기반으로, 마지막 인덱스가 last.length이다() - 1

+0

작동! 감사! –

1

이 시도 : 중복 항목으로 표시

char lastLast = lastLower.charAt(lastEnd-1);