Java 如何在其他方法中使用main方法中的变量(用户输入)?
我正试着做一个课堂作业,但我遇到了一个我找不到解决办法的问题。在我的主方法中有一个名为passwd的变量。我让一个用户输入一个可能的密码,该输入存储在变量中。然后检查密码变量的长度,以确保它满足长度要求。然后我想用另一种方法chat检查变量的每个字符,看它是否是一个数字 问题是我不能在digitCheck()方法中使用main方法中的passwd变量 有人能告诉我如何解决这个问题吗Java 如何在其他方法中使用main方法中的变量(用户输入)?,java,variables,methods,Java,Variables,Methods,我正试着做一个课堂作业,但我遇到了一个我找不到解决办法的问题。在我的主方法中有一个名为passwd的变量。我让一个用户输入一个可能的密码,该输入存储在变量中。然后检查密码变量的长度,以确保它满足长度要求。然后我想用另一种方法chat检查变量的每个字符,看它是否是一个数字 问题是我不能在digitCheck()方法中使用main方法中的passwd变量 有人能告诉我如何解决这个问题吗 package Password; import java.awt.Component; import jav
package Password;
import java.awt.Component;
import javax.swing.JOptionPane;
/**
*
* @author Curtis
*/
public class Password
{
private static Component frame;
//Main Method
public static void main(String[] args)
{//Declaration of variables
String passwd;
int leng;
boolean length = false;
//Prompt user to enter possible password
while(!length)
{
passwd = JOptionPane.showInputDialog("Please enter a possible password:\n" +
"Password must contain 6-10 characters\n"+
"Password must contain both a letter and a digit");
leng =passwd.length();//Determines Password Length
if(leng>5 && leng<11)
{
length = true;
digitCheck();
}
else //Gives Password Length Error Message
{
length = false;
JOptionPane.showMessageDialog(frame, "Your password does not meet the length requirements.", "Password Length Error", JOptionPane.ERROR_MESSAGE);
}
}
}
//Digit Check Method
public static void digitCheck();
{// declaration of variables
char c;
int digits = 0;
for(int i=0;i<leng;i++)
{
c = passwd.charAt(i);
if(Character.isDigit(c))
digits++;
}
}
}
包密码;
导入java.awt.Component;
导入javax.swing.JOptionPane;
/**
*
*@作者柯蒂斯
*/
公共类密码
{
私有静态组件框架;
//主要方法
公共静态void main(字符串[]args)
{//变量声明
字符串密码;
内冷;
布尔长度=假;
//提示用户输入可能的密码
而(!长度)
{
passwd=JOptionPane.showInputDialog(“请输入可能的密码:\n”+
“密码必须包含6-10个字符\n”+
“密码必须同时包含字母和数字”);
leng=passwd.length();//确定密码长度
如果(leng>5&&leng最简单的方法是将passwd
作为参数传递给digitCheck()
:
请注意,leng
也不可访问。由于可以通过调用passwd.lenth()
找到字符串的长度,因此无需将leng
作为单独的参数传递。最简单的方法是将passwd
作为参数传递给digitCheck()
:
请注意,leng
也将不可访问。由于您可以通过调用passwd.lenth()
找到字符串的长度,因此无需将leng
作为单独的参数进行传递。本例中的问题是因为您在不同的范围内声明变量。您有两个选项:
要么:
- 将变量移动到全局变量,可以通过在方法外部声明变量来实现,通常就在类decleration的下方,在您的情况下,这个变量可能就在
私有静态组件框架的上方或下方;
- 将变量作为参数传递给另一个方法,因此需要将
digitCheck()
方法更改为digitCheck(字符串passwd)
,然后像这样调用它:digitCheck(passwd)
第一个选项将允许您从类的任何部分访问变量。另一方面,第二个选项将允许您更轻松地重用您创建的方法,因为该方法是自包含的,不依赖于全局变量的使用。您的问题是因为您正在声明变量在不同范围内。您有两个选项:
要么:
- 将变量移动到全局变量,可以通过在方法外部声明变量来实现,通常就在类decleration的下方,在您的情况下,这个变量可能就在
私有静态组件框架的上方或下方;
- 将变量作为参数传递给另一个方法,因此需要将
digitCheck()
方法更改为digitCheck(字符串passwd)
,然后像这样调用它:digitCheck(passwd)
第一个选项将允许您从类的任何部分访问变量。另一方面,第二个选项将允许您更轻松地重用您创建的方法,因为该方法是自包含的,不依赖于全局变量的使用。这是因为digitCheck()方法不知道passwd变量
passwd变量在main()方法的范围内声明
要么将passwd变量传递给digitCheck()方法,要么使其成为类的静态成员,以便digitCheck()可以访问它。这是因为digitCheck()方法不知道passwd变量
passwd变量在main()方法的范围内声明
您可以将passwd变量传递给digitCheck()方法,或者使其成为类的静态成员,以便digitCheck()可以访问它。Erm…将其作为变量传递?您的方法允许有参数
,即参数
为什么不将其作为参数传递,如digitCheck(passwd)
?呃…将其作为变量传递?允许您的方法具有参数
,即参数
为什么不将其作为参数传递,如digitCheck(passwd);
?非常感谢您的帮助。此解决方案非常成功。非常感谢您的帮助。此解决方案非常成功。
public static void main(String[] args) {
...
length = true;
digitCheck(passwd);
...
}
public static void digitCheck(String passwd) {
// use passwd here
...
}