2015-10-20 27 views
1

我试图打印出给定的字符串的一切准备一个固定长度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 
+1

请参阅:http://stackoverflow.com/questions/8688668/in-java-is-the-result-of-the-addition-of-two-chars-an-int-or-a-char –

+2

尝试连接'System.out.println(“”+ input.charAt(i)+ input.charAt(j)+ input.charAt(k));' –

+0

感谢您的评论@patel – gates

回答

1

input.charAt(i)返回char,它是一个整数类型。因此+执行int而不是级联String s。

添加在表达式的开始,空字符串会解决你的问题:

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

是, 得到它了。谢谢 – gates

+0

任何想法如何使它通用?在上面的代码中,我明确地写了3个循环,但是在运行时我要求用户给出输入字符串。假设他给了长度为5的字符串,我可以动态地注入for循环。任何解决方案 – gates

+0

@gates你可以使用递归方法。 – Eran

1

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

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 
1

charAt返回一个整数类型(实际上是一个char其是在Java中一个16位的无符号整数类型)。 +只是将这些值相加。一轮

一种方法是用一个空字符串文字前缀表达式:这迫使Java来的解释+串联"" + input.charAt(/*etc*/

在我看来,这是在Java中允许+一个漏洞使用作为字符串连接运算符。

相关问题