我有一个对象数组。 从另一种方法我想从数组中打印一个对象,此方法的输入必须是一个整数,表示数组中对象的索引。 我无法从printObject()到达数组。我该怎么做?
public static void main(String[] args) {
Object []obj = new Object[2];
printObject(1);
}
public static void printObject(int i){
if (i == 0){
System.out.println(obj[0].toString());
}
if (i == 1){
Systen.out.println(obj[1].toString());
}
}
答案 0 :(得分:1)
因为它是声明在main
方法的块中,所以它只会在那里知道。将其设为class member或将其作为参数传递。
示例:
private int memberInt;
private void foo() {
memberInt = 5; // :)
int a = 7;
//..
a = 9; // :)
}
private void bar() {
a = 10; // :_(
memberInt = 10; // :)
}
答案 1 :(得分:1)
您可以将数组作为参数传递给printObject
(并简化):
public static void main(String[] args) {
Object[] obj = new Object[2];
printObject(obj, 1);
}
public static void printObject(Object[] objects, int index){
if (index == 0 || index == 1) {
System.out.println(objects[index].toString());
}
}
答案 2 :(得分:1)
变量obj
的范围仅限于main方法,并且在printObject
方法中不可用。
因此,要访问类型Object[]
的变量,请将Object []obj
作为类成员,以便该成员可以在类中使用,或者可以作为参数发送到printObject
方法。 / p>
检查以下代码:
public class AccessingMembers
{
static Object []obj = null;
public static void main(String[] args) {
obj = new Object[2];
obj[1] = new Integer(10);//for example
printObject(1);
}
public static void printObject(int i){
if (i == 0){
System.out.println(obj[0].toString());
}
if (i == 1){
System.out.println(obj[1].toString());
}
}
}
如果您运行代码,那么您将获得10作为答案。
答案 3 :(得分:0)
要么声明一个可以在整个类中访问的全局数组,要么将数组作为参数传递给方法,以便它可以访问它。
答案 4 :(得分:0)
Object [] obj = new Object [2];是一个方法变量,它的范围仅适用于该方法。
这里还有一件事使用上面的语句,你只创建了对象的两个引用而不是实例。
//创建实例
obj [0] = new Object();
obj [1] = new Object();
试试这个,
班级考试{
static Object [] obj = new Object [2];
public static void main(String[] args) {
printObject(1);
}
public static void printObject(int i) {
obj[0]=new Object();
obj[1]=new Object();
if (i == 0) {
System.out.println(obj[0].toString());
}
if (i == 1) {
System.out.println(obj[1].toString());
}
}
}