Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 - Fatal编程技术网

Java作业的麻烦

Java作业的麻烦,java,Java,我正在用两个类编写一个程序。我的TestState类需要访问第二个类中的变量,称为StateBirdAndFlower 要从第一个类读取的资源是一个名为stateData的数组,它对应于第二个类 import java.util.Scanner; import java.util.Arrays; public class TestState { public static void main(String[] args) { int position = getInfo

我正在用两个类编写一个程序。我的
TestState
类需要访问第二个类中的变量,称为
StateBirdAndFlower

要从第一个类读取的资源是一个名为
stateData
的数组,它对应于第二个类

import java.util.Scanner;
import java.util.Arrays;

public class TestState {
    public static void main(String[] args) {
        int position = getInfo(stateData, stateName); 
       //the error is here. stateData is not recogized.
     }
 }
    
这是第二节课:

import java.util.Arrays;

public class StateBirdAndFlower 
{
     String[][] stateData = new String[][] 
     {
        {"Alabama", "Yellowhammer", "Camelia"},
        {"Alaska", "Willow Ptarmigan", "Forget-Me-Not"},
        {"Arizona", "Cactus Wren", "Saguaro Cactus Blossom"},
        {"Arkansas", "Mockingbird", "Apple Blossom"},
        {"California", "California Valley Quail", "Golden Poppy"},
        {"Colorado", "Lark Bunting", "Rocky Mountain Columbine"},
        {"Connecticut", "Robin", "Mountain Laurel"},
        {"Delaware", "Blue Hen Chicken", "Peach Blossom"},
        {"Florida", "Mockingbird", "Orange Blossom"},
        {"Georgia", "Brown Thrasher", "Cherokee Rose"},
        {"Hawaii", "Nene", "Hawaiian Hibiscus"},
        {"Idaho", "Mountain Bluebird", "Syringa, mock orange"},
        {"Illinois", "Cardinal", "Violet"},
        {"Indiana", "Cardinal", "Peony"},
        {"Iowa", "Eastern Goldfinch", "Wild Praire Rose"},
        {"Kansas", "Western Meadowlark", "Sunflower"},
        {"Kentucky", "Cardinal", "Goldenrod"},           
        {"Louisiana", "Eastern Brown Pelican", "Magnolia"},
        {"Maine", "Chickadee", "Pine Cone and Tassel"},
        {"Maryland", "Baltimore Oriole", "Black-Eyed Susan"},
        {"Massachusetts", "Chickadee", "Mayflower"},
        {"Michigan", "Robin", "Apple Blossom"}
      };
}

我的问题是,如果位于另一个类上,如何从
TestState
访问此数组?

有很多方法可以做到这一点;显示三个示例:

1。静态变量

在第二个类中,修改
stateData
变量并将其设置为静态:

 public class StateBirdAndFlower {
     //...
     public static String[][] stateData = (...)
     //...
 }
现在,从第一个类调用静态变量:

  int position = getInfo(StateBirdAndFlower.stateData, stateName);
2。Getter方法

创建一个getter方法,这将涉及在代码上实例化
StateBirdAndFlower
类:

public class StateBirdAndFlower 
{
     //...
     public String[][] getStateData()
     {
        return stateData;
     }
     //...
 }
在第一节课上:

public class TestState 
{
   public static void main(String[] args) 
   {
      //...
      StateBirdAndFlower sbf = new StateBirdAndFlower();
      String[][] stateData = sbf.getStateData();
      //...
    }
 }
public class StateBirdAndFlower 
{
     //...
     public static String[][] getStateData()
     {
        return stateData;
     }
     //...
 }
3。静态吸气剂法

您还可以通过从第一个类调用
statebardflower.getStateData()
getStateData
方法声明为静态,并避免重新启动
statebardflower
类:

public class TestState 
{
   public static void main(String[] args) 
   {
      //...
      StateBirdAndFlower sbf = new StateBirdAndFlower();
      String[][] stateData = sbf.getStateData();
      //...
    }
 }
public class StateBirdAndFlower 
{
     //...
     public static String[][] getStateData()
     {
        return stateData;
     }
     //...
 }
在TestClass中:

  int position = getInfo(StateBirdAndFlower.getStateData(), stateName);

无论使用哪种方法,请尝试只调用该方法一次(将
stateData
保存到局部变量中,并避免多次调用其他类的方法,即使编译器对此进行了优化)

我看不到对stateBardFlower类的任何引用,该类包含stateData成员变量,在您的第一个代码示例中。我不知道这是否是您的问题,但这肯定是一个改进。在
TestState
类中调用
getInfo(stateData,stateName)StateBirdAndFlower.getInfo(stateData,stateName)取而代之。