2016-11-29 4 views
-2

У меня есть строка Java, такая как «10 20 30 40 50». Я хочу обработать эти значения с помощью StringTokenizer, основываясь на некоторых бизнес-требованиях несколько раз.Одиночный Java StringTokenizer для множественной обработки

Например, для определенного условия, я хочу удвоить каждое из значений, то есть, «20 40 60 80 100» и еще одно условие, я хочу утроить т.е. «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); 
} 

Могу ли я использовать один и тот же экземпляр 'ул' для утроения значения?

EDIT: Я знаю, что это может быть сделано через другой массив или другой список. Но я хочу знать, как я могу повторно использовать один и тот же StringTokenizer для утроения, как и для удвоения значений.

+2

Мы не будем писать для вас код. Покажите свои усилия. – tnw

+1

Из [JavaDoc для 'StringTokenizer'] (https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html):« _StringTokenizer »- это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде_ ». Это OracleSpeak для ** не использует этот 'class'. Всегда. ** –

+1

Разбирайте строку один раз, * сохраняйте значения *, а затем вы можете работать с ними несколько раз. Но нет, я не предоставляю код, а не вопрос с таким небольшим усилием. – dcsohl

ответ

0

Я бы написал функцию, которая берет строку и int (как множитель) и возвращает строку. Внутри функции она анализирует строку на основе пробелов, а затем преобразует строки в массив из int. Затем код будет умножать массив ints на int, который вы передали в функцию. После всего этого он объединяет ints в пустую строку, добавляя пробелы обратно после каждого добавления int, чтобы вернуть эту строку в конце функции.

Как новый программист, тренируйтесь, чтобы не использовать сторонние библиотеки, где это возможно. Сначала это может показаться трудным, но в конечном итоге это окупится!

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); 


} 
Смежные вопросы