gpt4 book ai didi

java - 在Java中如何重复if语句直到它为假

转载 作者:行者123 更新时间:2023-12-01 09:25:47 25 4
gpt4 key购买 nike

所以我有这段代码,应该生成用户根据这些条件决定的长度的随机单词:

[1] Every other letter is a random vowel (letter + vowel + letter + vowel...etc)
[2] Two vowels cannot meet together (ie: bout, caravaa)

我克服了第一部分条件,第二部分条件需要一些编辑。我使用 if 语句来检查 letter1letter2 是否恰好是元音,如果为真则生成生成不同的字母。问题是那些新生成的字母有可能是元音。我如何不断重复 if 语句直到它为 false? (Letter1 和 Letter2 不是元音)

import java.util.Random;

public class NickName_1
{
public static void main(String[] args)
{
java.util.Scanner scanner = new java.util.Scanner(System.in);

int letterNum = 6;
Random rn = new Random();
char letter1 = (char) (rn.nextInt(26) + 'a');
char letter2 = (char) (rn.nextInt(26) + 'a');
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
char vowel;


while (true)
{
//Ask user for word's length and store it
System.out.println();
System.out.print("Please enter the length of the word in letters: ");
letterNum = scanner.nextInt();

vowel = vowels[(int)(Math.random() * 5)];

for (int i = 0; i < (letterNum / 3); i++)
{
letter1 = (char) (rn.nextInt(26) + 'a');
letter2 = (char) (rn.nextInt(26) + 'a');
vowel = vowels[(int)(Math.random() * 5)];

// if letter1 or letter2 equal a vowel then regenerate letters
if (letter1 == 'a' || letter1 == 'u' || letter1 == 'i' || letter1 == 'e' || letter1 == 'o' ||
letter2 == 'a' || letter2 == 'u' || letter2 == 'i' || letter2 == 'e' || letter2 == 'o')

{
letter1 = (char) (rn.nextInt(26) + 'a');
letter2 = (char) (rn.nextInt(26) + 'a');
}
System.out.print(letter1 + "" + vowel + "" + letter2);
}
}
}
}

最佳答案

您提到了两个标准。但即使替换if,代码也无法满足它们的要求。与 while .

我已经修改了您的代码,以便它能够满足您的标准。我想指出以下主要内容:

  1. 您正在尝试一次打印 3 个字母。这意味着输入应该是 3 的倍数,否则程序将失败。我建议您一次打印一封信。

  2. 您的需求是letter + vowel + letter + vowel... ,但您正在打印 letter + vowel + letter + letter + vowel + letter... 。相反,我建议保留 boolean变量并每次改变它,检查是否轮到元音或辅音,然后在自己的代码块中做相应的工作。

  3. 以异常结束程序是一种不好的做法。这就是为什么我添加了 try-catch并将输入包装在其中。

  4. 为了让您的代码更加方便,Carcigenicatethis comment 中提出了一个好方法-- “创建一个函数或集合并检查成员资格”。我建议您像为元音创建另一个数组一样为辅音创建另一个数组,并随机选择一个。

Here是ideone中修改后的代码。以下是您的代码版本:

import java.util.Random;
/* Name of the class has to be "Main" only if the class is public. */
class NickName_1
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
java.util.Scanner scanner = new java.util.Scanner(System.in);

int letterNum = 6;
Random rn = new Random();
char letter = (char) (rn.nextInt(26) + 'a');
boolean shouldCons = true;
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

while (true)
{
//Ask user for word's length and store it
System.out.println();
System.out.print("Please enter the length of the word in letters: ");
try{
letterNum = scanner.nextInt();
}catch(Exception e){
break;
}

for (int i = 0; i < letterNum; i++, shouldCons^=true)
{
if(shouldCons) {
letter = (char) (rn.nextInt(26) + 'a');
while (letter == 'a' || letter == 'u' || letter == 'i' || letter == 'e' || letter == 'o')
{
letter = (char) (rn.nextInt(26) + 'a');
}
}
else letter = vowels[(int)(Math.random() * 5)];

System.out.print(letter);
}
}
}
}
<小时/>

关于java - 在Java中如何重复if语句直到它为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com