我的问题是一个非常基本的问题。为了给出一些背景知识,我得到了一个编写程序,用于将100个唯一(即无重复)值存储到数组中并显示它们。我之前认为我已经走上了正确的轨道,但是当我进行试运行时,我所得到的只是一个超出界限的错误。" Eclipse告诉我它的方法" checkDouble"但我似乎无法找到错误的地方。这里的任何人都可以帮助我吗?
public class exercise2 {
/*@author Paolo
* @param hundredVal array to store values
* @param input random number generator from 1-100
*/
public static int[] hundredVal = new int[100];
public static int n = (int) (Math.random()*100+1);
public static void main(String[] args) {
storeVal();
}
/*
* This method is meant to take 100 random values
* from 1-100 and store them into the array hundredVal
*/
private static void storeVal() {
for (int i = 0; i < hundredVal.length; i++){
hundredVal[i] = (int) (Math.random()*100+1);
if(!checkDouble(hundredVal)){
printVal();
}
}
}
//This method is meant to test if there are any repeated values
public static boolean checkDouble (int[] hundredVal){
for (int i = 0; i < hundredVal.length; i++){
for (int j = 0; i < hundredVal.length; j++){
if (hundredVal[i] == hundredVal [j] && i != j){
return true;
}
}
}
return false;
}
//this just prints out the numbers on the console.
private static void printVal(){
for (int i =0; i < hundredVal.length; i++){
System.out.println(hundredVal[i]);
}
}
}
我不希望任何人为我解决整个任务。我只是想知道是什么原因造成了越界错误。
答案 0 :(得分:0)
class exercise2{
public static int[] hundredVal = new int[100];
public static int n = (int) (Math.random()*100+1);
public static void main(String[] args) {
storeVal();
printVal();
}
private static void storeVal() {
for (int i = 0; i < hundredVal.length; i++){
hundredVal[i] = (int) (Math.random()*100+1);
}
if(!checkDouble(hundredVal)){
printVal();
}
}
public static boolean checkDouble (int[] hundredVal){
for (int i = 0; i < hundredVal.length; i++){
for (int j = 0; j < hundredVal.length; j++){
if (hundredVal[i] == hundredVal [j] && i != j){
return true;
}
}
}
return false;
}
private static void printVal(){
for (int i =0; i < hundredVal.length; i++){
System.out.println(hundredVal[i]);
}
}}
答案 1 :(得分:0)
你可以使用适当的java集合 - 在你的情况下LinkedHashSet应该完成这项工作。它是一个Set(包含唯一值),它是有序的。使用集合而不是数组几乎总是更好。