2013-09-29 3 views
-1

일부 개별 부품으로 수업 과제를 진행하고 있습니다. 사용자로부터 문자열 입력을 받아서 각 문자 사이에 별표를 삽입하는 루프 (가급적이면 for 루프)를 만들어야합니다. 나는 완전히 누군가에게 도움을 줄 수 있다면 그것을 시작하기에 도움이 될 것입니다.Java - For 루프가 사용자 입력 문자열의 문자 사이에 별표를 삽입합니다.

나는이 함께 왔어요 지금까지

} else if (choice.equalsIgnoreCase("C")) { 
     System.out.print("Enter text here: "); 
     String orig = input.nextLine(); 

     // To use for asterisk insertion 
     int x = 1; 
     int y = 2; 

     for (int length = orig.length(); length > 0;) { 
      orig = orig.substring(0,x) + "*" + orig.substring(y); 
      x = x + 2; 
      y = y + 2; 
     } 

    } 

그것은 잘 컴파일하지만 난 그것을 테스트하고 스레드에서 예외와 함께 온다 일부 텍스트를 입력 할 때 "기본"java.lang.StringIndexOutOfBoundsException : 문자열 인덱스가 범위를 벗어남 : 5

+0

대신 문자열을 사용하는 것이 훨씬 쉽고 직관적이고 간단하여 StringBuilder에 (마지막 제외) 다음에 별표 원래 문자열의 각 문자를 추가하여 새로운 문자열을 다시 효율적으로 될 것입니다. 물론 첫 번째 문자를 제외한 각 문자 앞에 별표를 추가 할 수도 있습니다. –

+0

그 유일한 문제는 우리가 StringBuilder를 사용하는 법을 아직 배웠지 않았기 때문에 내가 그 방법을 사용해야하는지 잘 모르겠다는 것입니다. 또한 예제 출력은 첫 번째 문자 뒤에 첫 번째 별표를 넣고 마지막 문자 뒤에 마지막 별표를 배치합니다. 즉; h * i * – user2827341

+0

나는 내가받은 오류로 끝날 때까지이 프로세스를 중단 할 때 루프를 알려주는 방법을 찾아야한다고 생각한다. – user2827341

답변

0

필요없는 경우를 제외하고는 변수를 다시 사용하지 마십시오. 코드를 더 복잡하고 읽기 어려워집니다.

String orig = "my test"; 
    StringBuilder result = new StringBuilder(); 

    for (int i = 0; i < orig.length() -1;i++) { 
     result.append(orig.charAt(i)); 
     result.append('*'); 
    } 
    result.append(orig.charAt(orig.length()-1)); 
0

for 루프에 유효한 종료 절이 없습니다.

for (int length = orig.length(); length > 0;) 

은 예외가 발생할 때까지 무기한으로 실행됩니다. for 루프에서 - "1"당신이 쉽게 제거하여 해당을 추가 할 수있는 것보다 마지막 't'후 *을 원하는 경우에

System.out.print("Enter text here: "); 
    String orig = input.nextLine(); 

    for (int length = orig.length() - 1; length > 0; length--) { 
     orig = orig.substring(0,length) + "*" + orig.substring(length); 
    } 

Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t 

를 생성합니다.

0

이 프로그램을 사용하면 문자열의 각 문자 사이에 별표를 추가 할 수 있습니다.

int leng; 
Scanner sc= new Scanner(System.in); 
System.out.println("enter the name"); 
String name=sc.nextLine(); 
leng=name.length(); 
char c[]=new char[leng]; 
for(int i=0;i<=leng-1;i++){ 
    c[i]=name.charAt(i); 

    System.out.print(c[i]); 
    if(i<leng-1) 
     System.out.print("*"); 
}