2016-11-29 3 views
-2

"10 20 30 40 50"과 같은 Java 문자열이 있습니다. StringTokenizer을 사용하여 이러한 값을 여러 비즈니스 요구 사항을 기반으로 처리하려고합니다.다중 처리를위한 단일 Java StringTokenizer

예를 들어, 특정 조건, I는 즉 "20 40 60 80 100"을 각각의 값을 두 배로 할 다른 조건, I는 즉, 고음 할 "30 60 90 120 150" .

각 조건에 하나씩 StringTokenizer을 여러 개 작성하면됩니다. 내 질문은 StringTokenizer의 단일 인스턴스를 사용하여 수행 할 수 있습니까? 필요한 경우 효율적인 솔루션을 제공하십시오. 여기

내 코딩 노력 :

String str = "10 20 30 40 50"; 
StringTokenizer st = new StringTokenizer(str); 
while(st.hasMoreTokens()){ 
    int i = Integer.parseInt(st.nextToken())*2; 
    System.out.println(i); 
} 

내가 값을 3 배로 동일한 인스턴스의 '를 사용할 수는?

편집 : 다른 배열 또는 다른 목록을 통해 수행 할 수 있습니다. 그러나 값을 두 배로 늘린 것처럼 똑같은 StringTokenizer를 3 배로 재사용 할 수 있는지 알고 싶습니다.

+2

우리는 코드를 작성하지 않습니다. 노력을 보여주십시오. – tnw

+1

[StringTokenizer'에 대한 JavaDoc] (https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html) : "_'StringTokenizer'는 유지되는 레거시 클래스입니다 호환성을 이유로 새로운 코드에서는 사용하지 않는 것이 좋습니다. " **에 대한 OracleSpeak은 **이 클래스를 사용하지 마십시오. ** –

+1

문자열을 한 번 구문 분석하고 * 값을 저장 한 다음 여러 번 조작 할 수 있습니다. 하지만 아니, 코드를 제공하지 않고, 약간의 노력만으로 질문을하지 않아도됩니다. – dcsohl

답변

0

문자열과 int (배율기로 사용)를 사용하여 문자열을 반환하는 함수를 작성했습니다. 이 함수는 공백을 기반으로 문자열을 구문 분석 한 다음 문자열을 int 배열로 변환합니다. 그런 다음 코드는 int 배열을 함수에 전달한 int로 곱합니다. 결국 그것은 함수의 끝에 문자열을 반환하기 위해 int가 함께 추가 될 때마다 공백을 추가하는 빈 문자열로 concatonate됩니다.

새로운 프로그래머는 가능하면 타사 라이브러리를 사용하지 않도록 스스로 교육하십시오. 처음에는 어려워 보일지 모르지만 장기적으로는 갚을 수 있습니다!

0

권장하지 않으므로 StringBuilder를 함께 사용하지 않아도됩니다. 다음은 필요에 따라 사용/수정할 수있는 버전입니다. 코드는 매우 자명합니다 :

public static String operate(int[] intArrNumbers,int multiplier){ 
     StringBuilder finalStr = new StringBuilder(); 
     for(int i: intArrNumbers){ 
      finalStr.append(i*multiplier); 
      finalStr.append("\n"); 
     } 
     return finalStr.toString(); 
    } 


    public static void main(String[] args){ 
     String str = "10 20 30 40 50"; 
     String[] strArrNumbers = str.split(" "); 
     int size = strArrNumbers.length; 
     int[] intArrNumbers = new int[size]; 
     int index=0; 
     for(String z:strArrNumbers){ 
      intArrNumbers[index]= Integer.parseInt(z); 
      index++; 
     } 
     int multiplier = 3; 

     String result = operate(intArrNumbers,multiplier); 
     System.out.println(result); 


}