Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在其他方法中使用main方法中的变量(用户输入)?_Java_Variables_Methods - Fatal编程技术网

Java 如何在其他方法中使用main方法中的变量(用户输入)?

Java 如何在其他方法中使用main方法中的变量(用户输入)?,java,variables,methods,Java,Variables,Methods,我正试着做一个课堂作业,但我遇到了一个我找不到解决办法的问题。在我的主方法中有一个名为passwd的变量。我让一个用户输入一个可能的密码,该输入存储在变量中。然后检查密码变量的长度,以确保它满足长度要求。然后我想用另一种方法chat检查变量的每个字符,看它是否是一个数字 问题是我不能在digitCheck()方法中使用main方法中的passwd变量 有人能告诉我如何解决这个问题吗 package Password; import java.awt.Component; import jav

我正试着做一个课堂作业,但我遇到了一个我找不到解决办法的问题。在我的主方法中有一个名为passwd的变量。我让一个用户输入一个可能的密码,该输入存储在变量中。然后检查密码变量的长度,以确保它满足长度要求。然后我想用另一种方法chat检查变量的每个字符,看它是否是一个数字

问题是我不能在digitCheck()方法中使用main方法中的passwd变量

有人能告诉我如何解决这个问题吗

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