java - Java随机名称生成器,选择单词的长度
问题描述
我的 Java 程序要求我创建一个 6-12 个字符之间的随机名称,名称中的奇数位置必须是辅音,偶数位置必须是元音,到目前为止我什至无法让它打印随机 12 个字母。下面的方法brandName() 中的代码应该迭代并不断向字符串new_Name 添加随机字母,直到它有12 个字母,但是每当我运行它时,它只会向new_Name 打印一个随机字母。我一直在努力解决几个小时......下面的代码
public class BrandName {
public static void main(String[] args) {
int name_iterations = 1;
int name_counter = 0;
while (name_iterations <= 10) {
name_counter++;
name_iterations++;
System.out.print("\n" + name_counter +") " + brandName());
}
}
public static String brandName() {
for (int iterations = 0; iterations <= 10; iterations ++); {
String new_Name = "";
int letter_Selector = 24;
int randomChar = (int) (Math.random() * letter_Selector);
String alphabet = "abcdefghijklmniprstuvwxz";
String odd_Consonants = "bcdfghjklmnprstvwxz";
String even_Vowels = "aeiou";
for (int max_Name = 0; max_Name <= 12; max_Name++); {
new_Name = new_Name + (alphabet.charAt(randomChar));
return new_Name;
}
}
}
}
解决方案
您需要将字符串的初始化移出循环:
for (int iterations = 0; iterations <= 10; iterations ++); {
String new_Name = "";
至
String new_Name = "";
for (int iterations = 0; iterations <= 10; iterations ++); {
否则,每次迭代都会丢失上一次迭代中的前一个随机字符。
然后你需要在返回之前等待循环完成:
for (int max_Name = 0; max_Name <= 12; max_Name++); {
new_Name = new_Name + (alphabet.charAt(randomChar));
// return new_Name; <-- remove this line
}
return new_Name; // <-- and put it here
现在我一起看,我不确定iterations
循环在做什么,你可能只需要完全删除那部分
public static String brandName() {
String new_Name = "";
int letter_Selector = 24;
String odd_Consonants = "bcdfghjklmnprstvwxz";
String even_Vowels = "aeiou";
int lengthSelector = ThreadLocalRandom.current().nextInt(5, 11 + 1);
for (int max_Name = 0; max_Name <= lengthSelector; max_Name++) {
if (max_Name % 2 == 0) {
int randomChar = (int) (Math.random() * even_Vowels.length());
new_Name = new_Name + (even_Vowels.charAt(randomChar));
} else {
int randomChar = (int) (Math.random() * odd_Consonants.length());
new_Name = new_Name + (odd_Consonants.charAt(randomChar));
}
}
return new_Name;
}
推荐阅读
- javascript - jQuery replaceWith() 回调函数更新内容
- android - C++ Callback to Java -> 为什么我不能在来自不同线程的回调类中检索 JNIEnv?
- pyspark - 列名在 aws 胶水中返回小写
- sql - 如何更新 postgres 中的表以添加订单列?
- corda - 如何在 Corda 中启动流程
- c++ - 在堆中创建对象数组时调用参数化构造函数
- sql - 查找按管理层级分组的透视数据
- logic - 如何修复代码的逻辑?我收到运行时错误和 stackoverflow 异常
- .net - 不同的日期时间格式在 EF Core 和 LINQ 中返回错误的结果集。DateTime.ParseExact 不起作用
- php - 这个功能是否足以防止 SQL 注入?