2015-03-31 160 views
2

我希望用戶輸入一個字符串,然後在所選間隔的字符之間添加一個空格。在用戶輸入的字符串之間添加空格

示例:用戶輸入:你好 然後每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命名爲getInput並不是一個好主意,因爲前綴get是按照慣例爲getter和setter方法保留的。請參閱http://stackoverflow.com/questions/1568091/why-use-getters-and-setters一般來說,使用動詞的變量名稱是不常見的...... – Robert 2015-03-31 08:33:17

+0

,並且您的示例或描述是錯誤的,因爲您添加了一個'你好''o'後面的空格... – Robert 2015-03-31 08:39:25

+0

好吧,如果沒有下劃線和空白,這就是即時通訊做的事情,如果在o後面有一個空格,這無關緊要。這只是一個例子,不能不在意我的變量名稱是什麼。 @Robert TY雖然:) – BriannaXD 2015-03-31 09:05:48

回答

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);」只有當我!= 0 && i%getSpace == 0時纔會添加一個字母?所以當它說charAt(i)它只會在charAt(i)加上字母,而不是字符串中的每個字母?我知道你說得很對,我很好奇。如果(i!= 0 && i%getSpace == 0) toInput2 = toInput2 +請參閱 – BriannaXD 2015-03-31 09:07:16

+0

oh不要擔心,只是意識到這是爲(int i = 0; getInput.length()> i; i ++){ 「_」; toInput2 = toInput2 + getInput.charAt(i);如果(i!= 0 && i%getSpace == 0){ } toInput2 = toInput2 +「_」;如果(int i = 0; getInput.length()> i; i ++){ } } toInput2 = toInput2 + getInput.charAt(i); }大聲笑,對不起我浪費你的時間 – BriannaXD 2015-03-31 09:20:58

0

可以簡化您的情況區分爲:

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

您還應該考慮重命名變量。

+1

這將始終在第一個字符後面插入一個「_」。 – aioobe 2015-03-31 08:35:42

+0

然後包括一個額外的檢查...'我!= 0 && getSpace == 0' – Seb 2015-03-31 08:43:55

+0

哦這只是我的代碼的一個例子。這些arnt我的實際變量名稱。感謝您的幫助,雖然:) – BriannaXD 2015-03-31 08:56:16

相關問題