2015-06-05 48 views
1

我试图建立一个像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` 
    } 
+0

这应该起作用:String start = number +“”+ number +“”+ number +“”+ number;或String start =“”+ number + number +“”+ number + number; – user4341206

+0

它对我来说就像这样:'String start = new StringBuilder()。append(number).append(number).append('').append(number).append(number).toString();':) – MrPencil

回答

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

有没有什么办法可以将'char'转换为字符串来得到这个'if(numberBefore> 0){}'Statement to work?我尝试这样,但我得到了错误的值'int numberBefore =(int)newName.charAt(1);' – MrPencil

+0

@MrPencil:这是一个完全独立的问题 - 它听起来像你不想转换'char'到'字符串',而是'int',而是......我建议你做一些研究,并问一个新的问题,如果你仍然有问题。 –

0

是的,这是因为+

关联性,你可以试试下面的代码也

String c1 =Character.toString(number); 
String s =c1+c1+" "+c1+c1; 
-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); 
    } 
} 
相关问题