为什么以下程序打印数字而不是字母

时间:2015-10-20 10:12:16

标签: java

我正在尝试打印固定长度3的给定字符串的所有可能性。这是我的程序

import java.util.*;
import java.lang.*;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        String input = "abc";
        int i=0,j=0,k=0;
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                for(k=0;k<3;k++){
                   System.out.println(input.charAt(i)+input.charAt(j)+input.charAt(k)); 
                }
            }
        }       
    }
}

但是它以这种格式打印数字的排列。但我打算以这种方式打印aaa,aab,aac,bbb ..

291
292
293
292
293
294
293
294
295
292
293
294
293
294
295
294
295
296
293
294
295
294
295
296
295
296
297

3 个答案:

答案 0 :(得分:1)

input.charAt(i)返回char,这是一个整数类型。因此,+执行int添加,而不是String s的连接。

在表达式的开头添加一个空字符串将解决您的问题:

System.out.println(""+input.charAt(i)+input.charAt(j)+input.charAt(k)); 

答案 1 :(得分:1)

你用过这一行。这可以解决你的问题。

$(...).tabs

答案 2 :(得分:1)

charAt返回一个整数类型(实际上是char,它是Java中的16位无符号整数类型)。 +只是对值进行求和。

一种方法是在表达式前面添加一个空字符串文字:这会强制Java将<{1}}解释为连接+

在我看来,这是Java中允许"" + input.charAt(/*etc*/用作字符串连接运算符的缺陷。