안녕하세요. 저는 두 숫자의 중간에서 검색하여 배열의 숫자를 검색해야하는 프로그램을 구현했습니다. 그것은 작동하지만, 그것이 배열에 여러 번 가지고있는 열쇠를 인쇄합니까?대답을 두 번 이상 출력합니다. Java
여기 내 코드입니다. 출력에
import java.util.Arrays;
public class Sokning_exkod_2 {
public static void main(String[] args) {
int[] minarray = new int[100];
int antalelement = minarray.length;
for (int i = 0; i<antalelement; i++) {
minarray[i] = (int) (Math.random()*100)+1;
}
Arrays.sort(minarray);
for (int i = 0; i<antalelement; i++) {
if (i%25 == 0 && i != 0){
System.out.println("| ");
}
System.out.print(minarray[i] + " ");
}
for(int i=0; i < antalelement; i++){
if(minarray[i] == 73){
hittaTalet(minarray);
break;
}
else if(i == antalelement-1){
System.out.println("Talet 73 finns inte i arrayen");
}
}
}
static void hittaTalet (int[] minarray){
int y = minarray.length-1;
int x = minarray.length/2;
int soktaTal = 0;
sokTal(minarray, y, x, soktaTal);
}
static void sokTal(int[] minarray, int y, int x, int soktaTal){
int y2;
boolean hittat = false;
while(x < y || hittat == false){
if(minarray[x] == 73){
soktaTal++;
hittat = true;
break;
}
else if(minarray[x] > 73){
soktaTal++;
y2 = x;
x = mittenHigh(y, x);
y = y2;
sokTal(minarray, y, x, soktaTal);
}
else if(minarray[x] < 73){
soktaTal++;
x = mittenLow(y, x);
sokTal(minarray, y, x, soktaTal);
}
}
System.out.println("Talet 73 var på plats " + x + " och det tog " + soktaTal + " sökningar"); /* this part is only supposed to print out once */
}
static int mittenLow(int y, int x){
return x+((y-x)/2);
}
static int mittenHigh(int y, int x){
return x-((y-x)/2);
}
}
예 :
1 1 1 2 2 3 3 3 5 5 |
5 6 6 7 7 8 10 12 13 13 |
14 15 15 17 18 18 21 22 22 22 |
23 26 27 29 31 31 31 32 33 34 |
37 38 39 39 39 39 41 43 43 44 |
45 45 47 47 48 49 52 54 55 56 |
59 59 64 64 65 65 66 68 69 71 |
71 73 74 74 80 80 81 81 82 82 |
83 84 85 85 85 86 87 87 87 88 |
90 90 90 90 94 96 96 99 99 99 x är 50 + y är 99
x är 74 + y är 99
x är 62 + y är 74
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar // <- this should only be printed once
Talet 73 var på plats 71 och det tog 5 sökningar
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 62 + y är 74
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 74 + y är 99
x är 62 + y är 74
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 62 + y är 74
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
x är 68 + y är 74
Talet 73 var på plats 71 och det tog 5 sökningar
Talet 73 var på plats 71 och det tog 5 sökningar
난 그냥 학교에서 처음으로 자바 코스를 읽는 코드로 좋은 아니에요. 또한 누군가가 디버거를 언급 했습니까? 그게 뭐야?
아 .. 내 눈 .. :(. 디버거는 귀하의 친구입니다 .. –
두 번 답변을 지정하십시오. 출력을 게시하십시오. –
그리고 질문을 제출할 때 영어로 작성하십시오. – Fabinout