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)代码>取而代之。