在Java中选择和替换随机生成的字母



我试图在随机生成的10个字母中选择一个位置,然后将随机选择的字母更改为字母表中的另一个字母。我正忙于如何选择和更改这封信。我认为我的程序正在选择一个位置,但我找不到如何继续。你也可以忽略用户输入部分,我计划稍后使用它。

这是我的程序

package Stuff;
import java.util.Scanner;
import java.util.Random;
public class Stuff {
static Scanner userinput = new Scanner(System.in);
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int N = alphabet.length(), rndposition = (int) (Math.random() * 10 + 1), rndletter = alphabet.charAt(1);
Random r = new Random();
for (int i = 0; i < 10; i++) {
System.out.print(alphabet.charAt(r.nextInt(alphabet.length())));
}
System.out.println(r);
}
}

我的输出是10个随机数字加上"java.util.Random484139f0

感谢您的任何帮助或建议

我也是新手,所以我可能做错了什么。

编辑:

这是我的新程序

public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int randomnumber = 0;
int rndposition = (int) (Math.random() * 10 + 1);
int rndletter = alphabet.charAt(1);
Random r = new Random();
for (int i = 0; i < 10; i++) {
randomnumber = r.nextInt(alphabet.length());
System.out.print(alphabet.charAt(randomnumber));
alphabet.replace(rndposition, rndposition + 1, rndletter);
}
System.out.println("n");
}

我现在面临的唯一问题似乎是"alphabet.replace",因为它不适用于(int,int,int(,所以它不允许我使用参数。然后我需要重新打印更新随机10个字符的单词,然后重复20次。

您正在获得"java.util.Random@6f94fa3e"与您的10个随机字母打印在同一行,因为for循环中的"print"方法将显示当前行,但不会终止它。另一方面,"println"方法将在当前行上打印并终止它,这意味着下一个显示的文本将在新行上。例如:

System.out.print("This is ");
System.out.println("the same line.");
System.out.println("This is a new line.");
// Output:
// This is the same line.
// This is a new line.

您可以通过在末尾插入换行符来增强它:

System.out.println("n" + r);

如果您不确定为什么首先要打印"java.util.Random484139f0"。您正试图打印一个未实现.toString((方法的对象。为了打印使用此对象生成的数字,您可以将其放入变量中,然后在上打印

int randomNumber = 0;
for (int i = 0; i < 10; i++) {
randomNumber = r.nextInt(alphabet.length());
System.out.print(alphabet.charAt(randomNumber));
}
System.out.println("n" + randomNumber);

编辑

一些可能很方便的增强功能:

在新行中声明变量是一种很好的做法,即使它们共享相同的类型:

int N = alphabet.length();
int rndposition = (int) (Math.random() * 10 + 1);
int rndletter = alphabet.charAt(1);

它增强了可读性,避免了这种声明可能带来的混乱和潜在的错误。您可以查看这篇文章或这篇文章,以充分了解其中的陷阱。

我脑海中浮现的另一个增强功能是使用骆驼大小写约定来命名代码中不存在的变量。有关详细信息,请参阅本页。

我相信其他一切都会随着练习而来:(享受你的冒险吧!

最新更新