我正在尝试在随机生成的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次。
您将在与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页面以获取更多信息。
我相信其他一切都会伴随实践的:)享受你的冒险!