2013-10-03 43 views
0
public static String convertPNumber(String p) { 
    String b; 
    for (int i = 0; i < p.length(); i++) { 
     char a = p.charAt(i); 
     if (!Character.isDigit(a)) { 
      if (a == 'A' || a == 'B' || a == 'C') { 
       b = "2"; 
      } 
     } else { 
      b = a; 
     } 
    } 
    return b; 
} 

public static void main(String args[]) { 
    convertPNumber("AB2"); 
} 

我希望它打印數字,如果字符是一個數字,但由於該方法是公共靜態字符串,它說,當b = a時需要字符串;並發現字符。我怎樣才能打印字符值?

+0

呃...你的編輯使我們的答案無效。如果您還有其他問題要問,請在另一個問題中提出。否則,此編輯可能會恢復。 – Makoto

+0

繼續並恢復,對不起 – user2770254

回答

3

bString的一種類型。 a是一種char。您不能將諸如char之類的原語分配給String

什麼你可以做的是使用Character.toString(char value)代替:

b = Character.toString(a); 

我也注意到,你得在你的程序中的一些不足之處......但我會離開的主要邏輯問題爲你解決。

當您着手解決上述問題時,有可能for語句未執行,因此變量b可能未被初始化。您可以通過初始化bnull來解決此問題。

你的邏輯是不尋常的 - 你只會關注String中的最後一個字符,我不完全確定那就是你想要的。我想我會爲你指出這一點。

+0

我正在介紹Java類,所以我的邏輯有點笨拙和非常規,並且說實話可能是錯誤的。這是一個未完成的代碼,我現在完成了,並且正在編輯它以包含我的完成代碼。謝謝。 – user2770254

0

您將字符串中的每個字符都轉換爲另一個字符。但是,你不會把這些角色放在一起。做到這一點的一種方式,但不一定是最有效的方法是使用StringBuilder類。該課程設計爲可變的String

我不會寫最內層的方法,但這裏有一個開始。

public class ABTranslator { 
    public String translate(String before) { 
     StringBuilder b = new StringBuilder(); 
     for (int i = 0, length = before.length(); i < length; i++) { 
      char a = before.charAt(i); 
      b.append(convert(a)); 
     } 
     return b.toString(); 
    } 

    public char convert(char before) { 
     // You write this. 
    } 
} 

您可以使用正則表達式而不是上面的if代碼。

現在,寫了一組JUnit測試,以檢查你的方法是否正確:

//In ABTranslatorTest.java 

@Before 
public void initTranslator() { 
    this.translator = new ABTranslator(); 
} 

@Test 
public void digitsAreConvertedToThemselves() { 
    Assert.assertEquals('3', translator.convert('3'); 
} 

@Test 
public void mostCharsAreConvertedToThemselves() { 
    Assert.assertEquals('X', translator.convert('X'); 
} 

@Test 
public void ABCAreConvertedToTwo() { 
    Assert.assertEquals('B', translator.convert('2'); 
} 

@Test 
public void WordsAreConvertedAsCharactersAre() { 
    Assert.assertEquals("222", translator.translate("AB2"); 
} 

使所有這些工作。從同事處找出如何設置JUnit 4.11。請注意,我使所有的方法都是非靜態的。如果你沒有這方面的經驗,請寫一個主要方法。儘管如此,這應該是你唯一的方法static