#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();
}
}