2013-09-27 2 views
-1

나는 어리석어졌습니다! 도와주세요! 과제물이 묻습니다그래서 내가 붙어있는 코드를 작업 중입니다.

우리는 사용자에게 욕설을 걸러 낼 수있는 옵션을 제공하고자합니다. 고양이, 개, 라마라는 단어가 모욕적이라고 생각한다고 가정 해 보겠습니다. 키보드에서 문자열을 읽고 그 문자열이 우리의 불경 한 단어 중 하나를 포함하고 있는지 테스트하는 프로그램을 작성하십시오. 프로그램에서 모독적인 단어가 들어있는 행만 거부하십시오. 예를 들어, Dogmatic 연결은 작은 카테고리입니다. 이 문장은 모욕적이라고 여겨서는 안됩니다. 나는 그것을 모독으로 세속적 인 일 "폭풍이 격변했다"와 같은 문장을 인쇄하지 않는 단어 격변이없는하려면, == 0이 잘못 알고 있지만

import java.util.*; 

public class Profanity { 

public static void main(String[] args) { 

Scanner in = new Scanner(System.in); 

String words; 

System.out.println("Enter a sentence"); 
words = in.nextLine(); 
words = words.toLowerCase(); 

if (words.indexOf("cat") !=-1) 
{ 
    if(words.length()==3) 
     System.out.println("cats by itself censored!"); 

else if(words.indexOf("cat ")==0) 
    System.out.println("cat is in the beginning censored!"); 
else if(words.indexOf(" cat ")!=-1) 
    System.out.println("cat is in the string censored!"); 
else if(words.indexOf(" cat")==0); //<-- ==0 is def wrong, please help 
    System.out.println("cat is at the end censored!"); } 
else 
    System.out.println(words); 
}} 

답변

0
else if(word.indexOf(" cat")==(word.length()-5); 

일해야한다.

+1

그것은 부분적으로 작동하지만 여전히 "폭풍은 대격변"이었습니다. – user2821574

+0

정확하게 입력 한 것을 시도했는데 대격변을 시도 했습니까? ''cat''이'word'의 부분 문자열이고'string''word'의 마지막 4 문자를 구성한다면, 인덱스는 마지막 인덱스보다 작게 4를 반환해야하고 마지막 인덱스는 1보다 작습니다 '.length()'메소드 호출로 반환 된 정수 값보다 더 큽니다. – nhgrif

+0

불행히도 : ( – user2821574

0

해결책에 결함이 있습니다. 구두점을 처리하지 않으며 " cat"은 반드시 문장의 끝과 일치하지 않습니다. 예 :please catch the cat - catch은 일치하고 무시되지만, cat은 통과합니다.

루프가 필요합니다. 을 모두 검색합니다. 어커런스가 "cat"입니다.

public int indexOf(String str, int fromIndex) 

여기 아이디어는 당신이 일치하는 항목을 찾을 때마다 그들은 편지 있다면 그것을보고 후, 당신이 그것을하기 전에 문자 및 문자를 확인하는 것이입니다 (사용 : 지정된 인덱스에서 검색 indexOf의 버전을 사용하십시오 Character.isLetter). 그 때 경계 검사를 할 때입니다. 그런 다음 색인 lastIndex + word.length()에서 word을 찾고 전체 문자열을 검사 할 때까지 계속 반복합니다.

이 루프를 다른 루프 안에 넣으면 모욕적 인 단어를 모두 하드 코딩 할 필요가 없습니다. 배열에 모든 요소를 ​​넣고 배열을 반복하면됩니다.