目标 -
尝试创建具有少量函数的类 - 创建数组并执行一些操作 现在我希望该用户输入数组的长度,程序将其返回给用户
怎么办? -
创建类:
public class Array {
private int myArray[];
private int count;
Array(int length){
myArray = new int[length];// create mas of diff length
count =0 ; // count q-ty of elements
}
//array out
public static void outArray(int array[]){
int length = array.length;
for (int i=0; i<length+1; i++){
System.out.println("Element number ["+i+"] is ["+ array[i]+"]");
}
}
主要:
public static void main(String[] args) throws IOException {
System.out.println("What length of your array? []");
Array matrix = new Array(Array.getCharToInt());
Array.outArray(matrix);
....
发生了什么事 -
我有一些问题 Array.outArray(矩阵);
问题 -
我在哪里弄错了?也尝试了很多变种,但不能理解我做错了什么。
更改函数以获取Array实例,但现在我遇到方法问题.. - 无法获取数组的长度
Array(int length){
myArray = new int[length];// create mas of diff length
int myLength=myArray.length;
}
//array out
public static void outArray(Array array){
int length = array.myLength; - cant do like this - "myLength cannot be resolved or is not a field".
我想如果我在构造函数中添加一些字段,我可以使用它,还是我做错了什么?
答案 0 :(得分:1)
定义数组的正确方法是:
private int[] myArray;
所以你的构造函数和类将是:
public class Array {
private int[] myArr;
private int count;
public Array(int length) {
myArr = new int[length];
count = 0;
}
public int[] getInnerArray() {
return myArr;
}
public static void processArray(Array array) {
int[] innerArray = array.getInnerArray();
int length = innerArray.length;
for (int i=0; i<length; i++) {
System.out.println("Next [" + i + "] is - " + innerArray[i]);
}
}
但是你也可以将public static void processArray(Array array)方法更改为实例方法:
public void processArray() {
int[] innerArray = myArr;
int length = innerArray.length;
for (int i=0; i<length; i++) {
System.out.println("Next [" + i + "] is - " + innerArray[i]);
}
}
和主要功能将是:
public static void main(String[] arg) {
System.out.println("What length of your array? []");
Array matrix = new Array(666);
matrix.processArray();
}
答案 1 :(得分:1)
首先,我建议您仔细阅读Perception和Java中的帖子。对于你的问题&#34; myLength无法解析或不是字段&#34;,是因为你正在调用array.myLength。 myLength是在调用Array类时创建的变量。每次调用一个类的新实例时都要记住它们是分开的。如果要在类中使用不同的方法,请在主Project类中创建该类的实例,即..您还在Array类中使用从未使用过的私有变量声明。
还有一个名为&#34; Array&#34;的类。在java.lang.reflect.Array中。如果您尝试创建自己的类而不是重写类中的方法,您可能还需要考虑重命名Array类。然后做一些事情:
public static void main(String[] args) throws IOException {
MyArrayClass mAC = new MyArrayClass;
System.out.println("What length of your array? []");
int[] matrix = new int[mAC.getCharToInt()];
mAC.outArray(matrix);
然后将outArray方法更改为
public static void outArray(int array[]){
int length = array.length;
for (int i=0; i<length; i++){
System.out.println("Element number ["+i+"] is ["+ array[i]+"]");
}
我喜欢使用您尝试使用的私有变量,但是您还需要实现getter和setter方法来获取变量。