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

问题描述 投票:0回答:1

我正在尝试在随机生成的10个字母中选择一个位置,然后更改该随机选择的字母以将其更改为字母表中的另一个字母。我对如何实际选择和更改这封信感到困惑。我认为我的程序正在选择一个位置,但是我无法找到继续进行操作的方法。您也可以忽略userinput部分,我打算以后使用。

这是我的程序

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.Random448139f0

感谢您的帮助或建议

我也是新来的,所以我可能做错了。

编辑:

这是我的新程序

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 eclipse
1个回答
1
投票

您将在与10个随机字母相同的行中打印“ java.util.Random@6f94fa3e”,因为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.Random448139f0”。您正在尝试打印未实现.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);

它增强了可读性,避免了此类声明可能引起的混乱和潜在错误。您可以查看this文章或this以完全了解陷阱。

我想到的另一种增强功能是驼峰大小写约定,用于命名代码中不存在的变量。您可以参考this页面以获取更多信息。

我相信其他一切都会伴随实践的:)享受你的冒险!

© www.soinside.com 2019 - 2024. All rights reserved.