Java 为什么下面的程序打印的是数字而不是字母

Java 为什么下面的程序打印的是数字而不是字母,java,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=

我试图打印出一个固定长度为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)); 
                }
            }
        }       
    }
}
input.charAt(i)
返回一个
char
,它是一个整数类型。因此,
+
执行
int
加法,而不是
字符串的串联

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

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

你用了这条线。那可以解决你的问题

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

char a_char = input.charAt(0); // This is also return only a char

charAt
返回一个整数类型(实际上是
char
,在Java中是一个16位无符号整数类型)<代码>+
只是对值求和

一种方法是在表达式前面加一个空字符串:这迫使Java将
+
解释为串联:
“”+input.charAt(/*etc*/


在我看来,这是Java中允许将
+
用作字符串连接运算符的一个缺陷。

请参阅:尝试连接
System.out.println(“+input.charAt(i)+input.charAt(j)+input.charAt(k))
感谢@patelhanks对资源@turonAny的评论如何使其通用?在上面的代码中,我显式地编写了3个循环,但在运行时,如果我要求用户给出输入字符串。假设他给出了长度为5的字符串,我可以动态注入for循环。有什么解决方案吗?@gates您可以使用递归方法。可以吗在这方面能给我一些资源吗?
System.out.println(Character.toString(input.charAt(i))+Character.toString(input.charAt(j))+Character.toString(input.charAt(k)));

char a_char = input.charAt(0); // This is also return only a char