- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我的在线 AP Comp Sci 老师没有回复我,我的程序遇到了问题。我需要根据此列表中的用户输入创建一个随 secret 码生成器:
System.out.println("※※※※※※※※※※※※※※※※※※※ | Password Generation Menu | ※※※※※※※※※※※※※※※※※※※");
System.out.println("※|==========================================================================|※");
System.out.println("※| [1] Lowercase Letters |※");
System.out.println("※| [2] Lowercase and Uppercase Letters |※");
System.out.println("※| [3] Lowercase, Uppercase and Numbers |※");
System.out.println("※| [4] Lowercase, Uppercase, Numbers and Symbols |※");
System.out.println("※| [5] Quit |※");
System.out.println("※|==========================================================================|※");
System.out.println("※※※※※※※※※※※※※※※※※※※※※※ | Your selection? | ※※※※※※※※※※※※※※※※※※※※※※※");
到目前为止我遇到了问题
int selection = in.nextInt();
if (selection ==1)
{
System.out.println("How many characters will me used in the password? (1 - 14)");
int chars = in.nextInt();
while ( count <= chars)
{
int password;
password += rand.nextInt((122 - 97) + 1)+ 97;
count++;
}
System.out.println("Password: " + password);
}
else if (selection ==2)
{
System.out.println("How many characters will me used in the password? (1 - 14)");
int chars = in.nextInt();
while ( count <= chars)
{
while( !(randNum>=65 && randNum<=90)&& !(randNum>=97 && randNum<=122))
{
randNum = randNumList.nextInt();
int password;
password += randNum;
}
count++;
}
System.out.println("Password: " + password);
}
else if (selection ==3)
{
System.out.println("How many characters will me used in the password? (1 - 14)");
int chars = in.nextInt();
while ( count <= chars)
{
while( !(randNum>=65 && randNum<=90)&& !(randNum>=97 && randNum<=122)&& !(randNum>=48 && randNum<=57))
{
randNum = randNumList.nextInt();
int password;
password += randNum;
}
count++;
}
System.out.println("Password: " + password);
}
else if (selection ==4)
{
System.out.println("How many characters will me used in the password? (1 - 14)");
int chars = in.nextInt();
while ( count <= chars)
{
int password;
password += rand.nextInt((126 - 35) + 1)+ 35;
count++;
}
System.out.println("Password: " + password);
}
else if (selection ==5)
{}
else
{
System.out.println(" ERROR: " + selection + " is not on the menu ");
}
}
提示找不到变量密码,是循环的原因吗?由于我的工作落后了,我感到非常困惑和沮丧
(这是我第一次在这个网站上提问,如果格式很奇怪,抱歉)
最佳答案
问题很少。
其中一个是范围的概念。每个变量都有一个范围,它定义了变量何时可以被访问以及存储数据的时间。
您的每个选项(1-4)都使用不同的方法创建一个密码,并且每种方法都使用循环向密码添加字符。因此,每个方法都应该有一个变量来存储添加字符时的密码。一般来说,结构可能是这样的:
if (selection == 1) {
System.out.println("How many characters?");
int chars = in.nextInt();
StringBuilder password = new StringBuilder(chars);
for (int count = 0; count < chars; ++count) {
password.append((char) ('A' + rand.nextInt(26)));
}
System.out.println("Your password is: " + password);
} else if (selection == 2) {
...
这里要注意的关键是我们在添加字符的循环外部定义了一个变量password
。这意味着 password
的值将在循环的每次迭代中得到维护。
一旦退出封闭 block (if (selection == 1) { ...
),变量 password
就不再存在,并且它的值也不再存在。内容不再可访问。这意味着您可以在处理下一个选项的 block 内声明另一个名为 password
的变量,该变量与第一个 block 中的 password
完全无关。它甚至不必是同一类型。
这就是作用域的工作原理:作用域中定义的变量对于嵌套在其中的任何作用域都是可见的,但是当退出作用域时,该变量将不再存在。
我假设您正在尝试使用字母、数字和符号(字符序列)生成密码。在 Java 中表示文本有几种不同的方法,但我在上面演示了解决此问题的最方便的选项,即 StringBuilder
。您会注意到,当我 append()
每个字符时,我使用了强制转换 (char)
。这是因为整数相加的结果是整数。 StringBuilder
有许多采用不同数据类型的 append()
方法。如果附加char
,则会附加该字符。但是,如果您追加一个 int
,则会追加表示该数值的一系列字符(以十进制表示)。通过转换为 char
,我们选择正确的 append()
版本。
你重复了很多代码。更好的结构可以通过将公共(public)代码“提升”到子 block 之外来避免这种情况。
int selection = in.nextInt();
System.out.println("How long?");
int chars = in.nextInt();
StringBuilder password = new StringBuilder(chars);
for (int count = 0; count < chars; ++count) {
if (selection == 1) {
password.append((char) ('A' + rand.nextInt(26));
} else if (selection == 2) {
...
}
}
System.out.println("Your password is: " + password);
这可以让你免于重复提示、输入输出处理、password
变量的声明和初始化等。它使你的代码更短,如果你发现一个bug,你更有可能在一个地方修复它,而不是在每个受支持的选项中修复它。
随着了解更多,您将找到更好的方法来处理不同的选项,方法是将角色生成分解到另一个对象中,您在进入循环之前选择一次该对象。这样您就不必不断地重新评估选择了哪个选项。
关于java - 随 secret 码生成器(ASCII - AP 计算机科学)Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459425/
#include using namespace std; struct dateofbirth{ char day[2]; char month[2]; char year
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 3年前关闭。 Improve t
在我接触到这个方法之前,我以为我理解了递归。我对这件事的时间安排感到非常惊讶,因此请求你们的帮助。 public static void mystery5(String sWord) { in
private int[] myStuff; /** Precondition: myStuff contains int values in no particular order. /*/ p
问题是: 给定一个由未知大小的整数和其他三个 int 值组成的 ArrayList,删除 ArrayList 中位于 int 值指定的索引位置的三个元素。将 ArrayList 的第一个元素设置为三个
我正在尝试找出一种算法来找到数字列表中最大的 2 个数字。 最高的数字可以在 n-1 个阶段中找到,也许通过做冒泡排序的第一步或类似的事情。对我来说,似乎也可以在总共 1.5n 次比较中找到下一个最高
所以我的在线 AP Comp Sci 老师没有回复我,我的程序遇到了问题。我需要根据此列表中的用户输入创建一个随 secret 码生成器: System.out.println("※※※※※※※※
我应该编写一个实现 Locatable 接口(interface)的 Cruiser 类。 Cruiser 将具有 x、y 和速度属性。 x、y 和速度是整数。您必须为 Cruiser 类提供 3 个
我是一名优秀的程序员,十分优秀!