我有一个程序,我应该在其中创建一个具有成员函数的类,该成员函数创建不同简单数据类型的数组。我在main方法中实例化了一个类,即,我创建了该类的对象,并调用了createArray方法。当我尝试使用Arrays.fill(name,startIndex, endIndex, value)
用相同类型的数据填充数组时,找不到该名称的数组。我想问你为什么?
import java.lang.reflect.Array;
import java.util.Arrays;
public class MainClass {
public void createArray(){
int [] ints = new int[10];
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(ints,0,9,8);
}
}
}
答案 0 :(得分:3)
您的代码存在一些问题,下面提供了一个更简单的版本:
public class MainClass {
public void createArray(){
//This lives only in here. It is not available outside.
int [] ints = new int[10];
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(ints,0,9,8);
}
}
}
在您创建的代码中,ints
仅存在于createArray
方法中。一旦执行退出此方法,该数组将不再可用并标记为垃圾回收。
要解决此问题,您需要将方法签名更改为return
类型为int
的数组(这样,当您调用createArray
方法时,此方法可以使您返回它创建的数组)。然后,您需要确保您捕获在主类中返回的数组。然后,您可以对其执行操作。
答案 1 :(得分:2)
如果您不想更改createArray
方法签名,则可以将数组存储在class属性中并为其创建getter方法。
这是一些代码:
import java.util.Arrays;
class MainClass {
private int[] ints;
public void createArray(){
this.ints = new int[10];
}
public int[] getInts() {
return ints;
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(mcl.getInts(),0,9,8);
}
}
}
但是由于createArray
已经公开,更好的方法可能是更改其签名以返回int[]
,这种情况的示例代码:
import java.util.Arrays;
class MainClass {
private int[] ints;
public int[] createArray(){
this.ints = new int[10];
return ints;
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(mcl.createArray(),0,9,8);
}
}
}
答案 2 :(得分:1)
答案 3 :(得分:1)
<div id="myAngularApp" title="Angular Scope" ng-app ng-controller="MainCtrl">
<div class="container">
<button id="okBtn" class="btn btn-primary" ng-click="addBackground()">ok</button>
</div>
</div>