首页 > 解决方案 > 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;
    } 
    
 }
    

 }
        
}

标签: java

解决方案


您需要将字符串的初始化移出循环:

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; 
}

推荐阅读