Java. Вывод определенного количества символов
Озадачился тем, что иногда необходимо вывести String определенной длинны. Нашел в интернете отличное решение
public class RandomString {
// function to generate a random string of length n
static String getAlphaNumericString(int n)
{
// chose a Character random from this String
String AlphaNumericString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789"
+ "abcdefghijklmnopqrstuvxyz";
// create StringBuffer size of AlphaNumericString
StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; i++) {
// generate a random number between
// 0 to AlphaNumericString variable length
int index
= (int)(AlphaNumericString.length()
* Math.random());
// add Character one by one in end of sb
sb.append(AlphaNumericString
.charAt(index));
}
return sb.toString();
}
public static void main(String[] args)
{
// Get the size n
int n = 20;
// Get and display the alphanumeric string
System.out.println(RandomString
.getAlphaNumericString(n));
}
}
Далее, мне было необходимо вывести только цифры, но опять же, с тем учетом, чтобы я мог задавать количество символов. И я модифицировал это так
public class RandomNumber {
// function to generate a random string of length n
public static String getAlphaNumber(int n)
{
// chose a Character random from this String
String AlphaNumber = "0123456789";
// create StringBuffer size of AlphaNumericString
StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; i++) {
// generate a random number between
// 0 to AlphaNumericString variable length
int index
= (int)(AlphaNumber.length()
* Math.random());
// add Character one by one in end of sb
sb.append(AlphaNumber
.charAt(index));
}
return sb.toString();
}
}
Потом я создал и третий класс, для вывода только букв (опять же главные условие - что можно задать количество букв)
public class RandomAlpha {
// function to generate a random string of length a
public static String getAlphaString(int a) {
// chose a Character random from this String
String AlphaString = "ABCDEFGHIJKLMNOPRSTUVWXYZ";
// create StringBuffer size of AlphaNumericString
StringBuilder sb = new StringBuilder(a);
for (int i = 0; i < a; i++) {
// generate a random number between
// 0 to AlphaString variable length
int index
= (int)(AlphaString.length()
* Math.random());
// add Character one by one in end of sb
sb.append(AlphaString
.charAt(index));
}
return sb.toString();
}
}
Вопрос в том, как сделать, чтобы это было все в одном классе, я уверен, что есть решение гораздо красивее и разумнее моего, но я новичок и придумать лучшее решение я пока не смог. Помогите пожалуйста
Ответы (2 шт):
Ну вынесите свой формат в отдельные константы и передавайте его параметром.
public class Main {
public static void main(String[] args) {
RandomString.getStringByFormat(10, RandomString.LETTERS);
RandomString.getStringByFormat(5, RandomString.NUMBERS);
RandomString.getStringByFormat(3, RandomString.LETTERS_AND_NUMBERS);
}
}
class RandomString {
public static String LETTERS = "ABCDEFGHIJKLMNOPRSTUVWXYZ";
public static String NUMBERS = "0123456789";
public static String LETTERS_AND_NUMBERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789"
+ "abcdefghijklmnopqrstuvxyz";
static String getStringByFormat(int length, String format){
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int index = (int) (format.length() * Math.random());
sb.append(format.charAt(index));
}
return sb.toString();
}
}
как сделать, чтобы это было все в одном классе,
Сделать очень просто. Берем все три метода и складываем в один класс:
public class MyWonderfulStringClass { // любое имя, какое нравится
public static String getAlphaString(int a) {
// тут код
}
public static String getAlphaNumber(int n) {
// тут код
}
static String getAlphaNumericString(int n) {
// тут код
}
}