字符串获取错误的值

时间:2015-06-05 08:33:40

标签: java string stringbuilder

我正在尝试构建一个类似11 11的字符串,但我遇到问题我正在为start获取以下字符串98 11而不是11 11

我该如何解决?

我感谢任何帮助。

Character number = newName.charAt(2); //here number is 1
Character numberBefore = newName.charAt(1); //here numberBefore is 1

try (PrintWriter writer = new PrintWriter(path+File.separator+newName);
    Scanner scanner = new Scanner(file)) {
  boolean shouldPrint = false;
  while (scanner.hasNextLine()) {
  String line = scanner.nextLine();

  if(numberBefore >0 ){
    String start= number+number+" "+number+number; //here start is `98 11`
  }

3 个答案:

答案 0 :(得分:10)

是的,这是由于+的相关性。

此:

String start= number+number+" "+number+number;

实际上是:

String start = (((number + number) + " ") + number) + number;

因此,您正在number + number(正在对int执行数字提升)和然后字符串连接。

这听起来像你想要的:

String numberString = String.valueOf(number);
String start = numberString + numberString + " " + numberString + numberString;

或者:

String start = String.format("%0c%0c %0c%0c", number);

答案 1 :(得分:0)

是的,这是因为+

的相关性

您也可以尝试以下代码

String c1 =Character.toString(number);
String s =c1+c1+" "+c1+c1;

答案 2 :(得分:-1)

        String newName = "111";
    Character number = newName.charAt(2); // here number is 1
    Character numberBefore = newName.charAt(1); // here numberBefore is 1

    if (Character.getNumericValue(numberBefore) > 0) {  // checking against numeric rather than ascii
        System.out.println("ASCII value of char " + (int) number); // ASCII code for '1' = 49
        String start = String.valueOf(number) + String.valueOf(number) + " " + number + number; // here start is `98 11`
        System.out.println(start);
    }
}