2014-10-06 2 views
0

내 논리가 괜찮은 것처럼 느껴집니다. 나는 완전히 잃어버린 것처럼 느껴지지 않는다. 그러나, 나는 정확히 내가 뭘 잘못하고 있는지 알아. 부분 문자열의 시작 색인은 항상 찾을 수 있지만 사용자가 부분 문자열로 입력 한 단어의 색인의 전체 개수 (예 : 3,4,5,6)는 절대로 찾을 수 없습니다.하위 문자열의 각 문자 색인 찾기

나는 이것을 1 주일 동안 혼자서하는 방법을 찾아 내려고 노력했다. 나는 그것을 올바르게 할 수 없다.

import java.util.Scanner; 
public class midterm 
{ 
    public static void main (String[] args) 

    { 
     Scanner keyboard = new Scanner(System.in); 

     String simplePhrase; 
     String portionPhrase; 
     int portionIndex; 
     int portionCount; 
     int portionIndexTotal; 

     System.out.println("Enter a simple phrase:"); 
     simplePhrase = keyboard.nextLine(); 

     int phraseLength = simplePhrase.length(); 
     System.out.println("Phrase length:" +phraseLength); 

     System.out.println("Enter a portion of previous phrase:"); 
     portionPhrase = keyboard.nextLine(); 

     String portionPhraseSub = simplePhrase.substring(portionPhrase); 

     portionIndex = simplePhrase.indexOf(portionPhraseSub); 

     for (portionIndex; portionIndex <= portionPhrase; portionIndex++) 
     { 
      System.out.println("Portion phrase index:"+portionIndex); 
     } 
    } 
} 
+0

'partialPhrase'의 타입이'String' 일 때'portionIndex <= partPhrase'는 의미가 없습니다 ... (처음 사용했을 때 변수를 선언했다면 코드가 더 읽기 쉬울 것입니다.) –

+0

컴파일 된 것을 게시하십시오. 이'String partPhraseSub = simplePhrase.substring (partialPhrase);'는 컴파일되지 않습니다. – dasblinkenlight

+0

'simplePhrase.substring (partialPhrase)'는'partialPhrase'가 문자열 일 때도 무엇을 의미합니까? –

답변

0

나는 아직도 당신이 원하는 것에 혼란 스럽습니다. 당신이 알 필요가있는 것만 큼 두 가지 간단한 것들이 있습니다.

는 단어 "도토리"에서 "C"와 같은 단일 문자의 인덱스를 얻으려면, 당신은이 작업을 수행 할 것입니다 :

String s = "acorn"; 
int cIndex = s.indexOf("c"); 
System.out.println("The index of c is: " + cIndex); 

당신이 문자열이 덩어리가 포함되어 있는지 확인하려면 똑같은 방법을 사용하십시오. 우리가 단어에서 찾고 있다면 그래서 다시 "도토리"당신이 일어나는 곳 "ORN"보고 싶어, 당신은이 작업을 수행 할 것 :

String s = "acorn"; 
int ornIndex = s.indexOf("orn"); 
System.out.println("The index of orn is: " + ornIndex); 

를 인덱스가 자바에서 0부터 시작하므로 "의 인덱스 기억 a "도토리"는 0, "c"는 1, "o"는 2 등입니다.

도움이 되었기를 바랍니다. 행운을 빌어 요.

편집 : 방금 말한 내용 : "제 질문은 컴파일하는 코드입니다. 어떻게하면 하위 문자열 하나 하나를 계산할 수 있을까요?"

내가 할 수있는 한 최선을 다해 답변 해 드리지만, 여전히 혼란스러운 질문입니다.

개별 문자로 단어를 중단하려는 경우, 당신은 같은 것을 할 수있는 당신도 모든 문자 "카운트가 무슨 뜻 이죠 :

String s = "acorn"; 
char[] characters = new char[s.length()-1]; 
for(int i = 0; i < s.length() - 1; i++) { 
    char[i] = s.charAt(i); 
} 

을하지만, 당신이 원하는 것 내가 왜 단서가 없다? 그것을하기 위해 ... STRING.charAt (index)를 사용하여 주어진 인덱스에서 문자열의 모든 문자에 항상 액세스 할 수 있습니다. 또는 STRING 문자열 (STRING.substring (index, index + 1))을 갖고 싶다면

+0

첫 번째 예제는 나에게 의미가 있지만 두 번째 예제에서는 "ordIndex"= 0을 출력하지 않고 인덱스의 시작 만 인쇄한다는 의미일까요? 나는 색인 0 1 2를 세고 싶다. 그리고 orn은 0 1 2의 색인을 가지고있다. 나는 im가 문제가있는 것을 가지고있다. – Djeter277

+0

잘 시도해 보라. 두 번째 것은 ornIndex = 2를 인쇄 할 것입니다. 그 이유는 "orn"이 발생하기 때문입니다. –

+0

하지만 "orn"에는 0 1의 인덱스가 없습니다. 2. 원한다면 ...이 이유를 모르겠습니다. 당신의 질문입니다. 인덱스는 인덱스입니다. 단일 인스턴스에는 하나의 색인이 있습니다. 길이가 3이기 때문에, 해당 하위 문자열의 각 문자가 새로운 색인임을 의미하지는 않습니다. –

관련 문제