2016-12-04 49 views
1

我很新的Java,我需要一種方法,用另一個字母替換任何用戶輸入中間字母。無論用戶輸入「abcdef」,「frogs」還是「pizza」,如果需要,它都會將中間字母更改爲「Q」。我很新,所以我不知道如何使用數組。我想使用replaceCharAt()str.length()但我不知道如何將它們與未知的輸入一起使用。任何幫助,將不勝感激。我怎樣才能使方法來改變用戶輸入的中間字符,而不知道這個詞?

編輯:我已經包括我的課程和我的駕駛員課程,以顯示我正在處理的內容。我需要將輸入的dnaCode的中間字母改爲「Q」。

我班至今:

public class ComputerMicrobe 
{ 

    public String name; 
    public String dnaCode; 

//*********************************************************************** 
    //perameters 

    public ComputerMicrobe(String newDnaCode, String newName) 
    { 
    this.name(newName); 
    this.dnaCode(newDnaCode); 
    }// end perameters 



//************************************************************* 
// default 
public ComputerMicrobe() 
{ 
    this("12345", "ABCDEF"); 

}// end default 

//**************************************************************** 

// accessors 
public String getName() 
{ 
    return this.name; 
}// end name accesseor 

public String getDnaCode() 
{ 
    return this.DnaCode; 
}// end dnaCode accessor 

//*********************************************************************** 

public void setName(String newName) 
{ 
    this.name = newName; 
}// end name mutator 

public void setDnaCode(String newDnaCode) 
{ 
    this.dnaCode = newDnaCode; 
}// end dnaCode mutator 

//************************************************************************ 

我的驅動程序類(不能編輯,由於分配):

public static void main (String[] args) 
{ 
    Scanner stdIn = new Scanner(System.in); 
    String name; //Auxiliar ComputerMicrobe name 
    String dNACode; //Auxiliar ComputerMicrobe DNA Code 
    ComputerMicrobe a, b, c; // ComputerMicrobe objects 

    System.out.println("Enter name of first ComputerMicrobe"); 
    name = stdIn.next(); 
    System.out.println("Enter DNA Code for first ComputerMicrobe"); 
    dNACode = stdIn.next(); 
    a = new ComputerMicrobe(name, dNACode); 

    System.out.println("Enter name of second ComputerMicrobe"); 
    name = stdIn.next(); 
    System.out.println("Enter DNA Code for second ComputerMicrobe"); 
    dNACode = stdIn.next(); 
    b = new ComputerMicrobe(name, dNACode); 

    System.out.println("Initial set of ComputerMicrobes"); 
    System.out.println(a); 
    System.out.println(b); 

    System.out.println("ComputerMicrobe a after mutation"); 
    a.mutate(); 
    System.out.println(a); 

    System.out.println("ComputerMicrobe b after swap"); 
    b.swap(); 
    System.out.println(b); 

    System.out.println("ComputerMicrobe c after reproduction of a and b"); 
    c = a.reproduce(b); 
    System.out.println(c); 

    System.out.println("ComputerMicrobe b after mutation and swap"); 
    b.mutate().swap(); 
    System.out.println(b); 

    System.out.println("ComputerMicrobe b after invasion of swap a"); 
    b.invadedBy(a.swap()); 
    System.out.println(b); 
} // end main 
+0

更多代碼...告訴我們你是如何試圖做到這一點! –

+0

沒有理由超過這個長度,因爲你會在輸入中使用它。當你有偶數個字符時會發生什麼? – ChiefTwoPencils

+0

閱讀[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – MikeJRamsey56

回答

-1

我覺得這個..

public static String replaceChar(String word, String key) 
{ 

    int length = word.length(); 


    int center = length/2; 

    String before = word.substring(0, center - 1); 

    String after = word.substring(center + 1, length); 


    return before + key + after; 
} 


public static void main(String[] args) { 
    System.out.println(replaceChar("abcdef", "q")); 
} 
+0

這是'abcdef'中的中間字符? – ChiefTwoPencils

+0

我認爲是C,對吧? –

+0

不是。偶數字中沒有中間字符。你的算法取代了兩個「中間」字符,但是當你有「foo」這個單詞時它會做什麼? – ChiefTwoPencils

0

你可以試試這個;)

BufferedReader z=new BufferedReader(new InputStreamReader(System.in)); 
     String ch=(z.readLine()); 
     char valeur = 'Q'; //chat for replace 
     String res=""; 
     for(int i=0;i<ch.length()/2;i++){ 
      res+=ch.charAt(i); 
     } 
     res+=valeur; 
     for(int i=1+ch.length()/2;i<ch.length();i++){ 
      res+=ch.charAt(i); 
     } 
     System.out.println(res); 
+0

我已更新我的問題以獲得更好的清晰度 – newbgrammer

1

首先應該檢查userInput放慢參數是有效的,我的意思是它的長度應該是奇數和大於2

if(userInput.length() %2 ==0 || userInput.length()<3) 
     throw new IllegalArgumentException("userInput length should be odd and greater than 2"); 

,那麼你可以做你想做

int middleIndex = userInput.length()/2; 
return userInput.substring(0,middleIndex) + 'Q' + userInput.substring(middleIndex+1); 

整個方法應該是什麼像這樣:

public String replaceCharaterAT(String userInput) { 
     if (userInput.length() % 2 == 0 || userInput.length() < 3) 
      throw new IllegalArgumentException("userInput length should be odd and greater than 2"); 
     int middleIndex = userInput.length()/2; 
     return userInput.substring(0, middleIndex) + 'Q' + userInput.substring(middleIndex + 1); 
} 
+0

我已更新我的問題。感謝您的輸入 – newbgrammer

相關問題