簡體   English   中英

無法使用Java將int轉換為char

[英]can't cast int to char with Java

給我分配了一個生成1到26之間的隨機數,然后將該數字轉換為從'a'到'z'的字母的任務。 隨機生成部分看起來不錯,但是當我嘗試將數字轉換為char時,我只會得到一個空的方形框! 這是為什么?

    import java.util.Random;
    public class NumbersToLetters 
    {
        public static void main(String[] args) 
        {
            Random n;
            int num;
            n=new Random();
    //generating a random number from 1 to 26
            num=Math.abs(((n.nextInt())%26)+1); 
    //cast from int to char
            char myChar = (char) num; 
            System.out.println ("Number - " + num); 
            System.out.println ("Char - " + myChar);

   //I'm sure that my answer is right but no matter what I do,
   //it won't output a letter, all I get is a square-like box..
        }
    }

字符'a'未編碼為1 ,而是編碼為97 您需要在0到25(含)之間的值上加上'a'以獲得預期的結果:

num = 'a'+n.nextInt(26);

您生成的數字介於1到27(含)之間。 如果查看這些字符對應的是什么 ,您會發現它們實際上都不是可打印的。

您應該以+ 'a'而不是+ 1來進行計算

n.nextInt(26) + 'a';

這將為您提供正確的偏移量(恰好是97)以查找小寫字母。

我不是這里的Java專家,但可能與編碼不正確有關嗎? 查找UTF-8編碼,然后研究類型轉換

暫無
暫無

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

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