필자는 populate 배열이 증가함에 따라 메소드가 채워짐에 따라 값이 동일하면 위의 인덱스를 확인합니다. 그러나 각 인덱스를 개별적으로 처리하지 않으면 어떻게해야 비효율적인지 알 수 없습니다. 나는 for 루프를 만들려고했는데, I 값이 0이고 1 씩 증가했다. 그 안에 for 루프는 b 값이 1이고 또 1 씩 증가한다. 두 번째 for 루프 안에 if 문과 if 문이있다. 는 I 지수가 B 지수와 동일한 경우는 I 지수는 나는 간단한 생각하고 쉽게 당신이 할 수 변경을 구현하기 위해배열에서 중복을 어떻게 제거합니까?
public class CH7Ass {
public static void main(String[] args) {
int user;
int[] array;
int checkUserNum;
int tries=0;
System.out.println("I bet you can't guess my six numbers");
array=populate();
do{
tries++;
user=getUserNum();
checkUserNum=checkUserNum(user,array);
array=removeFromArray(array,checkUserNum);
}while(tries<6);
}
public static int[] populate(){
int[] populate;
populate= new int [6];
int random;
for(int i=0;i<populate.length;i++){
random=(int) ((Math.random())*50); //goes from 0-49
populate[i]=random;
System.out.println(populate[i]);
for(int b=1;b<populate.length;b++){
if(populate[b]==populate[i]){
populate[i]=random;
}
}
}
return populate;
}
public static int getUserNum(){
int getUserNum;
do{
System.out.println("Please input a number from 1 to 49:");
getUserNum=TextIO.getInt();
}while((getUserNum<1)||(getUserNum>49));
return getUserNum;
}
public static int checkUserNum(int getUserNum,int[] array){
boolean check=false;
int checkUserNum = 0;
for(int i=0;i<array.length;i++){
if(array[i]==getUserNum){
check=true;
System.out.println("You got it");
checkUserNum=i;
}
}
if(check==false){
checkUserNum=-1;
System.out.println(checkUserNum);
}
return checkUserNum;
}
private static int[] removeFromArray(int[] array,int checkUserNum){
int[] removeFromArray;
if(checkUserNum!=-1){
array[checkUserNum]=0;
removeFromArray=array[checkUserNum];
}
return removeFromArray;
}
} 내가 더으로 생각하지
설명을 다시 작성하십시오. –
random == populate [b] == populate [i]는 어떻게됩니까? 배열을 사용하는 방식을 다시 생각해 보겠습니다. 힌트 : 해시 테이블 데이터 구조를 생각해보십시오. populate()에서 – dbustosp
, 내부 for 루프는 절대적으로 아무것도하지 않습니다. populate [i]는 이미 루프 앞에 무작위로 할당되어 있습니다. 실수로 과제를받은 것 같아요. – Shiping