簡體   English   中英

為什么以下程序打印數字而不是字母

[英]Why the following program is printing numbers instead of alphabets

我試圖打印出固定長度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

input.charAt(i)返回一個char ,它是一個整數類型。 因此+執行int添加而不是String的連接。

在表達式的開頭添加一個空字符串將解決您的問題:

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允許+用作字符串連接運算符的缺陷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM