Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 尝试调用方法时出错_Java_Methods - Fatal编程技术网

Java 尝试调用方法时出错

Java 尝试调用方法时出错,java,methods,Java,Methods,我正在尝试创建一个方法。根据我阅读和观看的内容,我认为这是创建然后调用方法的方法,但我不太确定我是否做对了。我收到和错误时,我遵守,所以如果你有任何建议,如何更好的代码,将不胜感激 以下是错误: 错误:找不到符号 它给了我大约10个错误,所有这些错误都与publicstaticvoidgetlabeldata()中的数组有关,我试图在其中创建一个方法 代码如下: import javax.swing.JOptionPane; public class MailOrderCall { public

我正在尝试创建一个方法。根据我阅读和观看的内容,我认为这是创建然后调用方法的方法,但我不太确定我是否做对了。我收到和错误时,我遵守,所以如果你有任何建议,如何更好的代码,将不胜感激

以下是错误:

错误:找不到符号

它给了我大约10个错误,所有这些错误都与publicstaticvoidgetlabeldata()中的数组有关,我试图在其中创建一个方法

代码如下:

import javax.swing.JOptionPane;
public class MailOrderCall
{
public static void main(String[] args)
{
    streetAddress, city, state, zip.
    String nameAddressArray[] = new String[7];
    String numBoxesInput;
    int numBoxes;
    String enterAnother = "Y";
    int counter;



    getLabelData();

    while(enterAnother.equalsIgnoreCase("Y"))
    {
        counter = 1;
        // begin the inner loop to display a label and increment the counter
        while(counter <= numBoxes)
        {
            System.out.println(nameAddressArray[0] + " " + nameAddressArray[1] + " " + nameAddressArray[2]);
            System.out.println(nameAddressArray[3]);
            System.out.println(nameAddressArray[4] + ", " + nameAddressArray[5] + " " + nameAddressArray[6]);
            System.out.println("Box " + counter + " of " + numBoxes);
            System.out.println();
            counter = counter + 1;
        } // end while

        // ask the user if finished entering mail orders
        enterAnother = " ";   // initialize the variable to something other than "Y" before sending the prompt
        enterAnother = JOptionPane.showInputDialog("Do you want to produce more labels? Y or N");

        // validate input for enterAnother... keep them here until they enter Y, y, N, or n
        while (!enterAnother.equalsIgnoreCase("Y") && !enterAnother.equalsIgnoreCase("N"))
        {
            enterAnother = JOptionPane.showInputDialog(null, "Invalid Response. Please enter Y or N.",
                                                        "DATA ENTRY ERROR", JOptionPane.ERROR_MESSAGE);
        } // end while

        if(enterAnother.equalsIgnoreCase("Y"))
        {
            // if the user said they have more, then send prompts to read the next mail order input from user
        getLabelData();
        } // end if
    } // end while
// successfully terminate the application
system.exit(0);
} // end main()

 public static void getLabelData() {
            nameAddressArray[0] = JOptionPane.showInputDialog("Enter     title (Mr., Ms., Dr., etc.): ");
                nameAddressArray[1] = JOptionPane.showInputDialog("Enter first name: ");
                nameAddressArray[2] = JOptionPane.showInputDialog("Enter lastname: ");
                nameAddressArray[3] = JOptionPane.showInputDialog("Enter street address: ");
                nameAddressArray[4] = JOptionPane.showInputDialog("Enter city: ");
                nameAddressArray[5] = JOptionPane.showInputDialog("Enter state (IL, MO, etc.): ");
                nameAddressArray[6] = JOptionPane.showInputDialog("Enter zip (e.g., 62025): ");

                numBoxesInput = JOptionPane.showInputDialog("Enter number of boxes in the order:");
        numBoxes = Integer.parseInt(numBoxesInput);
}


} // end class
import javax.swing.JOptionPane;
公共类MailOrderCall
{
公共静态void main(字符串[]args)
{
街道地址,城市,州,邮编。
字符串nameAddressArray[]=新字符串[7];
字符串输入;
内特牛;
字符串enter=“Y”;
整数计数器;
getLabelData();
while(输入另一个.equalsIgnoreCase(“Y”))
{
计数器=1;
//开始内部循环以显示标签并递增计数器

while(counter似乎您正试图访问
getLabelData
函数中不可用的变量。如果您想在多个函数中使用变量,您应该在整个类的范围内声明它,如下所示:

public class MailOrderCallEMH {

    String nameAddressArray[] = new String[7];
    String numBoxesInput;

    public static void main(String[] args) {
        // ...
    }

}
另外,
streetAddress、city、state、zip。
看起来不像有效的java语法。您可能应该正常声明这些变量:

// Replace Object by the type you want
Object streetAddress;
Object city;
Object state;
Object zip;

希望这有帮助!

您似乎试图访问
getLabelData
函数中不可用的变量。如果您希望在多个函数中使用变量,则应在整个类的范围内声明它,如下所示:

public class MailOrderCallEMH {

    String nameAddressArray[] = new String[7];
    String numBoxesInput;

    public static void main(String[] args) {
        // ...
    }

}
另外,
streetAddress、city、state、zip。
看起来不像有效的java语法。您可能应该正常声明这些变量:

// Replace Object by the type you want
Object streetAddress;
Object city;
Object state;
Object zip;

希望这有帮助!

nameAddressArray
已在您的
main
方法中声明为局部变量。如果在方法内部声明变量,则只能从该方法访问它

如果您想从类中的任何方法访问
nameAddressArray
,请通过在类内部但在这样的方法外部声明它,将其声明为
MailOrderCallEMH
的成员变量

public class MailOrderCallEMH
{
    // Since this is a member of the class, you can use it from any method within this class
    static String nameAddressArray[] = new String[7];

    public static void main(String[] args)
    {
       // code
    }

    public static void getLabelData() 
    {
       nameAddressArray[0] = JOptionPane.showInputDialog("Enter     title (Mr., Ms., Dr., etc.): ");
       // and so on
    }
}
另外,请注意我是如何将
nameAddressArray
声明为
static
。原因是在静态方法中访问的成员变量也必须是静态的。因为您是从Java开始的,所以我建议您阅读
static
的功能。一般来说,静态变量和方法的使用是不受限制的库拉格

另一种方法是将
nameAddressArray
作为参数传递给
getLabelData

public class MailOrderCallEMH
{
    public static void main(String[] args)
    {
       String nameAddressArray[] = new String[7];
       getLabelData(nameAddressArray);
       System.out.println(nameAddressArray[0] + " " + nameAddressArray[1] + " " + nameAddressArray[2]);
    }

    public static void getLabelData(String nameAddressArray[]) 
    {
       nameAddressArray[0] = JOptionPane.showInputDialog("Enter     title (Mr., Ms., Dr., etc.): ");
       // and so on
    }
}

需要注意的是,在本例中,
getLabelData
能够更新在
main
中声明的变量的原因是该变量通过引用传递(而不是通过值传递)。这是您应该确保熟悉的另一个重要概念。

nameAddressArray
已在您的
main
方法中声明为局部变量。如果您在方法内部声明变量,则只能从该方法访问它

如果您想从类中的任何方法访问
nameAddressArray
,请通过在类内部但在这样的方法外部声明它,将其声明为
MailOrderCallEMH
的成员变量

public class MailOrderCallEMH
{
    // Since this is a member of the class, you can use it from any method within this class
    static String nameAddressArray[] = new String[7];

    public static void main(String[] args)
    {
       // code
    }

    public static void getLabelData() 
    {
       nameAddressArray[0] = JOptionPane.showInputDialog("Enter     title (Mr., Ms., Dr., etc.): ");
       // and so on
    }
}
另外,请注意我是如何将
nameAddressArray
声明为
static
。原因是在静态方法中访问的成员变量也必须是静态的。因为您是从Java开始的,所以我建议您阅读
static
的功能。一般来说,静态变量和方法的使用是不受限制的库拉格

另一种方法是将
nameAddressArray
作为参数传递给
getLabelData

public class MailOrderCallEMH
{
    public static void main(String[] args)
    {
       String nameAddressArray[] = new String[7];
       getLabelData(nameAddressArray);
       System.out.println(nameAddressArray[0] + " " + nameAddressArray[1] + " " + nameAddressArray[2]);
    }

    public static void getLabelData(String nameAddressArray[]) 
    {
       nameAddressArray[0] = JOptionPane.showInputDialog("Enter     title (Mr., Ms., Dr., etc.): ");
       // and so on
    }
}

需要注意的是,在本例中,
getLabelData
能够更新在
main
中声明的变量的原因是该变量通过引用传递(而不是通过值传递)。这是您应该确保熟悉的另一个重要概念。

您无法从另一个方法访问一个方法(
main
)的局部变量。局部变量仅存在于声明它们的块中。您无法访问一个方法(
main
)的局部变量局部变量只存在于声明它们的块中。