好的,所以我创建了一个类型为int的数组,大小为10。
我已将其初始化为1-100之间的随机值。
现在我的任务是编写一个名为output的方法,它将int数组作为参数,并在列中显示数组的所有元素,如下所示:
输出
arr[0] : 17
arr[1] : 42
等等,但是当我在eclipse中这样做时,它说
i cannot be resolved to a variable,
所以我想在我的方法中重新初始化它,但不会给我一整套不同的数字吗?
private int [] nums;
public UsingArrays(){
nums = new int [10];
for (int i = 0; i <nums.length; i++){
nums[i] = (int)(Math.random()*100)+1;
}
}
public String Output(){
String string;
string = "Arr[" + i + "]:" + nums[i];
return string;
}
}
答案 0 :(得分:1)
我无法解析为变量
你忘了用for
循环围绕整个事物,这个循环将声明&amp; 使用 i
变量:
public void Output(int[] array){
String string = "";
for(int i = 0; i < array.length; i++) {
string += "Arr[" + i + "]:" + array[i] + "\n"; // not recommended
}
System.out.println(string);
}
在这种情况下,如果使用StringBuilder
会更好,以避免在每次迭代时创建新的String
实例:
public void Output(int[] array){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < array.length; i++) {
sb.append("Arr[" + i + "]:" + array[i] + "\n"); // Accumulate results
}
System.out.println(sb.toString()); // print final result
}
答案 1 :(得分:0)
我不知道你为什么要在构造函数中初始化int []并将这个数组作为全局变量保留,当你说这个名为output的方法将把int数组作为一个参数&#39; 。 根据您的要求,这是一个合适的解决方案:
public static void main(String[] args) {
final int sizeOfArray = 10;
final int[] nums = new int[sizeOfArray];
//JAVA 7
for(int i = 0; i < sizeOfArray; i++){
nums[i] = (int)(Math.random() * 100) + 1;
}
//JAVA 8
IntStream.range(0,sizeOfArray)
.forEach(i -> nums[i] = (int)(Math.random() * 100) + 1);
output(nums);
}
private static void output(final int[] arrayToDisplay){
//JAVA 7
for(int i = 0; i < arrayToDisplay.length; i++){
System.out.printf("arr[%d] : %d \n",i,arrayToDisplay[i]);
}
//JAVA 8
IntStream.range(0,arrayToDisplay.length)
.forEach(i -> System.out.printf("arr[%d] : %d \n",i,arrayToDisplay[i]));
}
您应始终确保所有变量都已初始化并且已为其分配了适当的类型(至少在Java中)。如果我是你,我会坚持上面代码的Java 7版本
答案 2 :(得分:0)
这个问题不会得到遵守,因为没有定义输出法中“我”的含义。
另一种解决方案可以是:
public String Output(){
StringBuffer sb = new StringBuffer();
int i=0;
while(i<nums.length){
sb.append("Arr[" + i + "]:" + nums[i]);
System.out.println(sb.toString());
sb.clear();
}
}