2016-02-20 63 views
-2

帮助,CodeFight给我这个代码,并说它有1行错误。 但我不明白这段代码。 我以为线:new StringBuilder(inputString).reverse().toString() 将扭转字符串,但是当我跑它没有。 代码主题:返回输入String最右边的数字。字符串奇怪的代码

public class Sort { 

    static char lastDigitRegExp(String inputString) { 
     new StringBuilder(inputString).reverse().toString(); 
     java.util.regex.Matcher m = java.util.regex.Pattern.compile("[0-9]").matcher(inputString); 
     m.find(); 
     return m.group().charAt(0); 
    } 


    public static void main(String[] a){ 
     String m = "ksg23q4yfkpghqap98sr"; 
     System.out.println(lastDigitRegExp(m)); 
    } 
} 
+0

我不知道Java,但我猜这不是一个就地操作,你需要将操作的值返回到一个变量。 – Rotem

+0

@Rotem是正确的 - Java字符串是不可变的。你需要inputString =新的StringBuilder ... –

+0

我想CodeFight告诉你一点点,而不仅仅是这条线有错误?比如说,那个错误可能是什么? – njzk2

回答

0

更改此

new StringBuilder(inputString).reverse().toString(); 
     java.util.regex.Matcher m = java.util.regex.Pattern.compile("[0-9]").matcher(inputString); 

行代码:

String reverseString = inputString.reverse(); 
java.util.regex.Matcher m = java.util.regex.Pattern.compile("[0-9]").matcher(reverseString); 

应该工作。代码new StringBuilder(inputString).reverse().toString();在将其存储在一个变量中后会起作用,除非在现有代码中假定对inputString没有进行更改。

注意:您不应该需要toString(),因为您已经在处理字符串。

+0

而不是再创建一个字符串('reverseString')为什么你不能'inputString = inputString.reverse();' – Satya

+0

@Satya确信可以完成,这只是为了清楚地描绘出处理过的字符串处理。 – nullpointer

+0

谢谢,代码实际上是inputString = new StringBuilder(inputString).reverse()。toString(); – fxc