Java 为什么下面的程序打印的是数字而不是字母
我试图打印出一个固定长度为3的给定字符串的所有可能性。这是我的节目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=
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