2015-01-29 2 views
0

CompSci I 클래스의 프로그램을 작성 중입니다. 완전히 멈췄습니다. 할당은 if 문을 사용하여 특정 문자열에 문자 또는 문자 그룹이 들어 있는지 확인하는 것입니다. 클래스를 만들었고 모든 것을 레이아웃했지만 캐릭터를 검색하는 방법을 알지 못합니다. 나는 Strings and Return 메쏘드가 정말 새로운 편이다. 나는 비슷한 질문을 이미 보았지만 아무도 내가 찾던 것을 정말로 도왔다. 나는 약간의 도움에 감사 할 것입니다.단어에 문자 또는 문자 그룹이 포함되어 있는지 확인하려면 어떻게합니까?

내 코드 지금까지 : 홈페이지 :

import static java.lang.System.*; 

public class Lab04e 
{ 
public static void main(String[] args) 
{ 

} 
} 

StringChecker :

당신이) String.contains를 (사용하는 것이 허용되지 않는 경우
import static java.lang.System.*; 
public class StringChecker { 

private String check; 

    public void StringChecker() 
    { 
     check = ""; 
    } 

    public void StringChecker(String s) //constructor 
    { 
     check = s; 
    } 

    public void setString(String s) //set string 
    { 
     check = s; 
    } 

    public boolean letterExists(char a) 
    { 
     return false; 
    } 

    public boolean findSubString(String s) 
    { 
     return false; 
    } 

    public String toString() 
    { 
     return check +"\n\n"; 
    } 
} 
+1

[String class]에 대한 Java 설명서 (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html)를 살펴보면 다음과 같은 정보가 있습니다 너는 필요해. –

+0

[String class] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html)의 메소드를 살펴보고 필요한 항목이 적합한 지 확인하십시오. 해야 할 것. –

+0

이것을 위해서'contains (String)'메소드가 필요하지 않습니까? 그것은 javadocs와 모든 것입니다. – EpicPandaForce

답변

0

난 실제 작업 예제를 제공했습니다 (컴파일 됨) 원하는대로 다중 파일 main + class 상황에 맞출 수 있습니다. 그러나 main은 클래스 정의와 동일한 파일에있을 수도 있습니다 (단, 하나의 main이있을 수 있기 때문에 하나의 클래스 정의 파일에만 있습니다).

import java.lang.System.*; 
import java.util.*; 

public class StringChecker { 

    public static void main (String[] args) { 
     String fullString = args[0]; 
     String subString = "xyz"; 

     if (fullString.length() < subString.length()) { 
      System.out.println("'" + subString + "' not found in '" + fullString + "'"); 
      System.exit(0); 
     } 
     int i = 0; 
     do { 
      if (fullString.charAt(i) == subString.charAt(0) && 
       fullString.charAt(i + 1) == subString.charAt(1) && 
       fullString.charAt(i + 2) == subString.charAt(2)) { 
        System.out.println("'" + subString + "' is present in '" + fullString + "'"); 
        System.exit(0); 
      } 
     } while (i++ < fullString.length() - subString.length()); 

     System.out.println(subString + "not found in '" + fullString + "'"); 
     System.exit(0); 
    } 
} 

OK :

java StringChecker stringxyztocheck 

이 소스 코드 :

javac StringChecker.java 

당신이 좋아하는 뭔가 명령 줄에서 테스트 할 수 있습니다

당신은로 컴파일 할 수 있습니다 , 지금은 강연을 위해 :-)

"반환 방법"이라고하셨습니다. return은 메소드가 아니라 명령문입니다. 그 차이를 아는 것이 중요합니다.

또한 자바에서는 변수를 클래스 정의에서 정적으로 초기화 할 수 있습니다. 간단한 경우 생성자에서이 작업을 수행 할 필요가 없습니다. String check = ""를 정의에 쓸 수 있습니다.

위의 예는 조잡하고 나쁜 형태입니다. 저는 이런 식으로 실제 세계 프로그램을 쓰지 않았으며 단지 개념을 증명했습니다. 그래서 플래그, 변수, 함수 및 루프를 가능한 많이 사용하지 않습니다.

나는 do ... while()을 사용했습니다. 이러한 형태의 루핑은 일반적으로 선호되거나 필요하지 않으며 코드를 읽기 및 유지하기가 어렵습니다. 일반적으로 do/while 대신 for()를 사용하는 형태로 루프를 구조화하는 방법을 찾을 수 있습니다. 부울 플래그 또는 널 (null) 검사를 사용하여 for() 형식으로 루프를 효율적으로 정렬 할 수 있습니다.

이 예에서는 임의의 길이의 하위 문자열을 고려하지 않습니다 (if 문을 사용하기 때문에 긴 하위 문자열의 경우 매우 길어질 수 있고 가변 길이의 하위 문자열을 처리하는 매우 복잡한 if 문) 문자열)

이 나쁜 예가되는 또 다른 문제는 값을 확인하고 문을 인쇄하는 함수와 같이 코드 전체에서 반복되는 것을 처리하는 함수를 만들지 않는다는 것입니다.

0

:

당신이이 String의 모든 문자 위로 반복합니다. String.charAt (int i)을 사용하여 위치 i에서 단일 문자를 가져올 수 있습니다.

subString을 확인하려면 두 문자열을 모두 반복해야합니다.

if 문을 사용하면 두 문자가 같은지 여부 만 확인하면됩니다. 이 경우 발생을 발견했습니다.

0

나는 당신이 찾고있는 것이 String class이라고 믿습니다. 특히 .contains(CharSequence s) 방법을 찾고 있습니다. 다음, 당신이 당신의 시나리오에 대해이 작업을 수행 할 수있는 방법의 예입니다

boolean characterCheckString = false; 
String myString = "abcde"; 
if(myString.contains("a")) { 
    characterCheckString = true; 
} 

보다이 방법 here 읽기 (if 문 사용).

1

원하는 동작을 이미 구현 한 String 클래스의 contains 메서드를 사용하면됩니다. 그러나이 숙제의 요점은 어떻게해야 하는지를 배우는 것입니다. 따라서 기본 접근법은 String의 모든 문자를 반복하고 대상 문자와 비교하는 것입니다. length() 메서드를 사용하여 String의 길이를 가져올 수 있으며 charAt (int) 메서드는 주어진 위치의 문자를 제공합니다. 따라서 다음과 같이 표시 될 수 있습니다.

for (int i = 0; i < check.length(); i++() { 
    if (check.charAt(i) == a) return true; 
} 
return false; 

하위 문자열을 확인하기 위해 확장 할 수 있습니다.

0

쉬운 방법은 String Classcontains 방법을 사용하는 것입니다. 수동으로 수행하려면 substring 메소드를 사용하여 찾고있는 문자열의 길이 인 가능한 모든 하위 문자열을 확인하십시오. 비교를 위해 equals 방법을 사용하십시오. 문자열을 반복 할 때 마지막 인덱스보다 더 멀리 확장해야합니다.

관련 문제