出于某种原因,我似乎无法访问我创建的for循环之外的数组值。我在本地声明了这个数组。但是当我必须输入一个值时,由于某种原因,入口值会不断给我0
。有没有办法从for循环中的数组中获取信息,以便“泛化”,这样就可以在其他函数中使用。
import java.util.*;
public class Array {
public static void main(String[] args) throws IndexOutOfBoundsException {
int[] array = new int[100];
try{
for(int i: array){
array[i] = (int)(Math.random()*100);
System.out.println(array[i]);
}
Scanner input = new Scanner(System.in);
System.out.println("Please enter an index for which you would like to see: ");
int index = input.nextInt();
System.out.println(array[index]);
}catch(IndexOutOfBoundsException ex){
System.out.println("Please enter in an index thta is not out of bounds");
}finally{System.out.println("--------------------------");}
}
}
答案 0 :(得分:2)
尝试使用此for循环,它应该工作:
for(int i=0;i<array.length;i++){
array[i] = (int)(Math.random()*100);
System.out.println(array[i]);
}
代码中的问题是:
当你执行for(int i: array)
时,你只是指示只将数组的内容从数组[0]复制到数组[99]到i,由于没有设置其他值,所以它始终为零。 。
增强的for循环应该用于更少的代码迭代
要了解增强循环的工作原理,请尝试以下给出的循环以便您理解:
int[] array = new int[100];
array[0]=1;array[1]=2;
for(int i: array){
// array[i] = (int)(Math.random()*100);
System.out.println(i);
}
运行此代码时,第一个和第二个元素将打印1和2.
希望现在明白。
答案 1 :(得分:0)
那是因为你正在使用增强型for-loop
你没有初始化数组的每个元素,获取值的唯一元素是第一个元素零。声明数组时,所有值都设置为零。因此,在增强型for-loop
中,您设置了array[0]
的值,这就是您将输出作为零的原因。
将增强型for-loop
替换为:
int[] array = new int[100];
try{
for(int i=0;i<array.length;i++){
array[i] = (int)(Math.random()*100);
System.out.println(array[i]);
}
Scanner input = new Scanner(System.in);
System.out.println("Please enter an index for which you would like to see: ");
int index = input.nextInt();
System.out.println(array[index]);
}catch(IndexOutOfBoundsException ex){
System.out.println("Please enter in an index thta is not out of bounds");
}finally{
System.out.println("--------------------------");
}
答案 2 :(得分:0)
声明数组时,为其提供100个索引。它们自动成为全0。你的每个循环只是为你的数组中的第0个索引分配一个随机数,其他一切都保持为0.你实际上并没有访问数组中的第i个元素!
这应修复您的代码:
public static void main(String[] args) {
int[] array = new int[100];
try{
for(int i=0; i<array.length; i++){
array[i] = (int)(Math.random()*100);
System.out.println(array[i]);
}
Scanner input = new Scanner(System.in);
System.out.println("Please enter an index for which you would like to see: ");
int index = input.nextInt();
System.out.println(array[index]);
}catch(IndexOutOfBoundsException ex){
System.out.println("Please enter in an index thta is not out of bounds");
}finally{System.out.println("--------------------------");}
}
}