【问题标题】:Print specific array object with method使用方法打印特定的数组对象
【发布时间】:2014-03-16 11:29:00
【问题描述】:
我有一个对象数组。
从另一种方法中,我想从数组中打印一个对象,该方法的输入必须是一个整数,它表示数组中对象的索引。
我无法从 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());
}
}
【问题讨论】:
标签:
java
arrays
object
methods
【解决方案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】:
因为它是在main 方法的块内声明的,它只会在那里被知道。将其设为class member 或将其作为参数传递。
例子:
private int memberInt;
private void foo() {
memberInt = 5; // :)
int a = 7;
//..
a = 9; // :)
}
private void bar() {
a = 10; // :_(
memberInt = 10; // :)
}
【解决方案3】:
变量obj的作用域仅限于main方法,在printObject方法中不可用。
因此,要访问Object[] 类型的变量,请将Object []obj 设为类成员,这样该成员将在整个类中可用,或者可以作为参数发送给printObject 方法。
检查以下代码:
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 作为答案。
【解决方案4】:
要么声明一个可在整个类中访问的全局数组,要么将数组作为参数传递给方法,以便它可以访问它。
【解决方案5】:
对象[]obj = 新对象[2];是一个方法变量,它的范围仅限于该方法。
这里还有一件事,使用上面的语句你只创建了对象的两个引用而不是实例。
//创建实例
obj[0]=新对象();
obj[1]=新对象();
试试这个,
类测试{
静态对象[] obj = 新对象[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());
}
}
}