Как преобразовать случайное число в символ - PullRequest
0 голосов
/ 17 февраля 2020

Я пытался преобразовать случайное число в символ.
Если я ввожу число в переменную, оно будет работать, но если я сделаю это int number = (int)(Math.random()*10);, а затем назначу его на символ и преобразую его char c = (char)number; когда я его печатаю, он ничего не показывает без ошибок, как невидимый символ.
Не могли бы вы помочь мне сделать это?

Ответы [ 4 ]

1 голос
/ 17 февраля 2020

Просто добавьте '0' к вашему int.

int number = (int)(Math.random()*10);
char c = (char)number + '0';

Поскольку '0' равно значению ASCII 48, '1' равно 49, et c ..., любое число от 0 до 9, если вы сложите его, то получите число, значение ASCII которого находится между '0' и '9'.

0 голосов
/ 17 февраля 2020

Используйте целое число и конвертируйте в строку.

public class Main {
    public static void main(String[] args) {
        Integer number = new Integer(Math.random() * 10);
        String c = number.toString();
        System.out.println(c);
    }
}
0 голосов
/ 17 февраля 2020

Это происходит потому, что вы получаете число от 0 до 9, которое соответствует непечатному символу. Попробуйте следующий код:

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int number = new Random().nextInt((126 - 33) + 1) + 33;
        char c = (char) number;
        System.out.println(c);
    }
}

Это напечатает некоторый символ из диапазона ASCII от 33 до 126.

0 голосов
/ 17 февраля 2020

Вы используете случайное число от 0 до 9. И при попытке преобразовать это в целое число вы можете получить эти возможные значения из таблицы ASCII

Dec  Char                         
---------                         
  0  NUL (null)                   
  1  SOH (start of heading)       
  2  STX (start of text)          
  3  ETX (end of text)            
  4  EOT (end of transmission)    
  5  ENQ (enquiry)                
  6  ACK (acknowledge)            
  7  BEL (bell)                   
  8  BS  (backspace)              
  9  TAB (horizontal tab)         
 10  LF  (NL line feed, new line) 

Так что вам нужно проверить ASCII таблица для использования Char *

...