2017-02-01 2 views
-2

Здесь у меня есть полный результат в моей строкеJava - Назначить определенное количество результата в строку

formatedString = {1,2,3,4,5,6,7,8,9,10.....N} 

Я хочу, чтобы сначала назначить 5 результат позволяет говорить

formatedString1 = {1,2,3,4,5} 

затем на следующий вызов, следующие пять, пока все результаты не закончится.

formatedString1 = {6,7,8,9,10} 

Есть ли способ, я могу это сделать.

Спасибо.

+1

петли, подстрока и многие другие способы ... Также полезно, когда вы показываете, что вы уже пробовали. – Abubakkar

+0

, пожалуйста, любой пример сэр? – Wilson

+0

Я не вижу строки здесь ... – Fildor

ответ

0

Вы могли бы сделать помощник-метод, как это на струнном-массив, который вы можете получить от вашего «formatedString»:

String formatedString = "1,2,3,4,5,6,7,8,9,10"; 
String[] arr = formatedString.split(","); // => ["1","2","3",...] 

private void call(String[] inputArr, int from, int count) 
{ 
    // check bounds here! 
    // "from" must be >0 and < inputArr.length 
    // "from" + "count" must be <= inputArr.length 

    for(int i = from; i < from+count; i++) 
    { 
     // just for safety: 
     if (i>=inputArr.length) break; 

     handle(inputArr[i]); 
    } 
} 

вызова в цикле, как:

int step = 5; 
for (int index = 0; index < arr.length; index += step) 
{ 
    // check that index + step do not exceed array length here 
    call(arr, index, step); 
} 

Для решение Java 8-Stream см. ответ @ Anton.

0

Как я понимаю, вы хотите получить n чисел на каждой итерации. Я бы сделал:

public String getN(String st, int n){ 

    ArrayList<String> res = new ArrayList<String>(); 
    for(int i = 0; i<(st.length/n),i++) 
    String aux[n]= new String[n]; 
    for(int j = 0; j<n;j++){ 
     aux[j]=st[(i*n)+j] 
    } 
    res.add(aux(i)); 
    } 

     return res.toString(); 
    } 

Не могу попробовать, но я думаю, он должен работать.

1

Вы можете использовать Streamoffsetlimit и методы:

String str = "0,1,2,3,4,5,6,7,8,9"; 
int offset = 0; int limit = 5; 
Stream.of(str.split(",")).skip(offset). 
      limit(limit).forEach(System.out::println); 

Просто приращением смещение на 5 каждый раз.

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