2015-03-31 2 views
2

Я хочу, чтобы пользователь вводил строку, а затем добавлял пробел между символом с выбранным интервалом.Добавление пробела между введенной пользователем строкой

пример: пользователь вводит: привет затем запрашивает пробел каждые две буквы. выход = he_ll_o_

import java.util.Scanner; 

public class stackOverflow { 


    public static void main(String[] args) { 


     System.out.println("enter a string"); 
     Scanner input = new Scanner(System.in); 
     String getInput = input.nextLine(); 

     System.out.println("how many spaces would you like?"); 
     Scanner space = new Scanner(System.in); 
     int getSpace = space.nextInt(); 


     String toInput2 = new String(); 

     for(int i = 0; getInput.length() > i; i++){ 

     if(getSpace == 0) { 
      toInput2 = toInput2 + getInput.charAt(i); 
      } 
     else if(i % getSpace == 0) { 
      toInput2 = toInput2 + getInput.charAt(i) + "_"; //this line im having trouble with. 
      } 

     } 


     System.out.println(toInput2); 

    } 



} 

Вот мой код до сих пор, это может быть совершенно неверный способ ее решения, так Поправьте меня, если им неправильно. спасибо заранее :)

+0

Неплохая идея назвать вашу строку 'getInput', поскольку префикс' get' соответствует соглашению, предназначенному для методов getter и setter. См. Http://stackoverflow.com/questions/1568091/why-use-getters-and-setters. В общем, необычно использовать глаголы для имен переменных ... – Robert

+0

, и ваш пример или ваше описание неверны, потому что вы добавляете пространство после 'o'' hello' ... – Robert

+0

хорошо, если нет подчеркивания и просто пробелов, что и делает im, это не имело бы значения, если бы существовало пространство после o. И это всего лишь пример, который не мог бы забыть, что такое имена переменных. @Robert ty хотя :) – BriannaXD

ответ

4

Я думаю, что вы хотели бы сформулировать ваше тело цикла следующим образом:

for(int i = 0; getInput.length() > i; i++) { 
    if (i != 0 && i % getSpace == 0) 
     toInput2 = toInput2 + "_"; 

    toInput2 = toInput2 + getInput.charAt(i); 
} 

Но есть более простой способ, с помощью регулярных выражений:

"helloworld".replaceAll(".{3}", "$0_") // "hel_low_orl_d" 
+0

спасибо, это очень помогло! Также просто интересно, но на этой строке «toInput2 = toInput2 + getInput.charAt (i);» не хотел бы добавить письмо только тогда, когда i! = 0 && i% getSpace == 0? Итак, когда он говорит charAt (i), он будет добавлять букву только в charAt (i), а не каждую букву в строке? Я знаю, что ты прав, и я ошибаюсь, им просто любопытно. Спасибо за кучи снова – BriannaXD

+0

О, не волнуйтесь, просто понял, что это для (int i = 0; getInput.length()> i; i ++) { if (i! = 0 && i% getSpace == 0) toInput2 = toInput2 + "_"; toInput2 = toInput2 + getInput.charAt (i); } то же, что и для (int i = 0; getInput.length()> i; i ++) { if (i! = 0 && i% getSpace == 0) { toInput2 = toInput2 + "_"; } toInput2 = toInput2 + getInput.charAt (i); } lol, извините, я трачу ваше время – BriannaXD

0

Вы можете упростить ваше деловое различие:

toInput2 += getInput.charAt(i); 
if(i != 0 && i % getSpace == 0) { 
    toInput2 += "_"; 
} 

Вы также должны подумать о переименовании переменных.

+1

Это всегда будет вставлять '_' после первого символа. – aioobe

+0

затем включить дополнительную проверку ... 'i! = 0 && getSpace == 0' – Seb

+0

oh это всего лишь пример моего кода. эти arnt мои фактические имена переменных. спасибо за вашу помощь хотя :) – BriannaXD

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