Установите мое собственное правило преобразования массива символов в строку в Java

#java

#java

Вопрос:

На самом деле я пишу программу для генерации нескольких действительно случайных чисел. Итак, я пытаюсь написать алгоритм для вычисления с использованием различных коэффициентов.И я хочу определить свою собственную кодировку, чтобы при ее преобразовании это могли быть только строки из определенных символов.

например, пользователю нужны только маленькие буквы, поэтому я хочу что-то вроде этого:

 char[] resu<
String result = new String(result,"MY OWN ENCODING")
  

Есть ли способ?

Большое спасибо!

Комментарии:

1. ваш вопрос мне не ясен

2. Неясно, что вы хотите сделать. Однако одно можно сказать наверняка: если вы имеете дело с числами, массив символов — это неправильный тип для использования.

3. С Java всегда есть способ 😉

4. Как правило, невозможно генерировать действительно случайные числа, только псевдослучайные числа.

Ответ №1:

Вы, вероятно, хотите создать класс конвертера:

 public class Converter {

  private String charset;
  public Converter(String charset) {this.charset = charset;}

  public char[] convert(char[] input) {

    char[] result = new char[input.length];
    // do your own magic
    return resu<
  }
}
  

Как только логика magic converter будет реализована и установлена:

 Converter converter = new Converter("abcdefghijklmnopqrstuvwxyz");
char[] result = converter.convert(myCharArray);
  

Ответ №2:

Похоже, вы неправильно понимаете, что такое «кодировка символов».

Кодировки символов, которые вы можете указать в качестве второго аргумента в String(byte[], String) конструкторе, не имеют ничего общего с тем, что вы, похоже, имеете в виду.

Кодировка символов — это то, что определяет, как символы в строке преобразуются в необработанные байты и наоборот. Например, кодировка ASCII указывает, что байт a со значением 65 представляет символ ‘A’, 66 — это ‘B’ и т.д.

Кодировка символов — это не то, что вы можете использовать для «преобразования» char[] с помощью в строковый объект, и это не то, что может отфильтровывать, например, символы не нижнего регистра или преобразовывать произвольные символы в символы нижнего регистра. Забудьте о кодировках символов для этой цели, потому что кодировки символов предназначены не для этого.

Просто напишите какой-нибудь метод, который преобразует выходные данные вашего генератора случайных чисел в символы в подходящем диапазоне. Вот простой пример программы, которая генерирует строку из случайных символов нижнего регистра:

 public class Example {
    public static void main(String[] args) {
        System.out.println(generate(10));
    }

    public static String generate(int len) {
        Random random = new Random();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < len;   i) {
            sb.append((char)('a'   random.nextInt(26)));
        }

        return sb.toString();
    }
}