【问题标题】:The string is getting the wrong value字符串得到错误的值
【发布时间】:2015-06-05 08:33:40
【问题描述】:

我正在尝试构建像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`
  }

【问题讨论】:

  • 这应该可以: String start= number+""+number+" "+number+""+number;或 String start= ""+number+number+" "+number+number;
  • 它也适合我String start = new StringBuilder().append(number).append(number).append(' ').append(number).append(number).toString(); :)

标签: java string stringbuilder


【解决方案1】:

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

这个:

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);

【讨论】:

  • 有什么方法可以将char 转换为字符串以使这个if(numberBefore >0 ){} 语句起作用?我试过这样,但我得到了错误的值int numberBefore = (int) newName.charAt(1);
  • @MrPencil:这是一个完全独立的问题 - 听起来您不想将 char 转换为 String 而是转换为 int... 我建议您做一些研究,如果仍有问题,请提出新问题。
【解决方案2】:

是的,这是因为 + 的关联性

你也可以试试下面的代码

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

【讨论】:

    【解决方案3】:
            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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2012-02-14
      • 1970-01-01
      相关资源
      最近更新 更多