Java에 대한 숙제에 대한 작업을하고 있는데, 프로그램에서 사용자의 10 자리 숫자를 읽은 다음 검색 할 숫자를 요청합니다. 숫자 (오름차순)를 정렬하고 배열에 대해 선형 검색을 수행 한 다음 찾은 아래 첨자 또는 찾을 수 없음을 나타내는 메시지를 반환해야합니다.선형 검색을 반환 할 때 찾을 수없는 하위 번호를 반환해야합니다
내 코드는 아래 첨자를 반환해야하는 경우에도 "찾을 수 없음"응답을 제공합니다. 내 코드를 살펴볼 수 있습니까? if 문을 변경하려고 시도했지만 도움이되지 않았습니다. 필자는 검색 및 정렬 방법에 대한 책 예제를 가능한 한 자세히 사용했습니다 (오류를 지적 할 수 있음).
다음은 코드입니다.
package program11;
import java.util.Scanner;
public class ArraySearch {
public static void main(String[] args) {
double[] arrayBuild = new double[10];
Scanner input = new Scanner(System.in);
for (int i = 0; i < arrayBuild.length; i++) {
System.out.print("Enter a number.");
arrayBuild[i] = input.nextDouble();
}
System.out.print("Enter a number to search for ");
int objective = input.nextInt();
linearCheck(arrayBuild, objective);
if ((objective >= 0) && (objective < arrayBuild.length)) {
System.out.println("Found at index: " + objective);
} else {
System.out.println("Not Found");
}
}
public static void arraySort(double[] arrayBuild) {
for (int i = 1; i < arrayBuild.length; i++) {
double currentPoint = arrayBuild[i];
int r;
for (r = i - 1; r >= 0 && arrayBuild[r] > currentPoint; r--) {
arrayBuild[r + 1] = arrayBuild[r];
}
arrayBuild[r + 1] = currentPoint;
}
}
public static double linearCheck(double[] arrayBuild, int objective) {
for (int i = 0; i < arrayBuild.length; i++) {
if (objective == arrayBuild[i])
return i;
}
return -1;
}
}
편집 - 새로운 코드. 이제는 모두 끝났습니다. 배열에없는 숫자를 입력 할 때를 제외하고는 음의 결과가 나타납니다. 예를 들어, 10 8 7 6 5 3 5 3 5 3 5 6을 입력하고 11을 검색하면 선형 검색의 경우 -1, 이진 검색의 경우 -11이됩니다. 내가 할 수있는 한 너의 충고를했다. 나는 지금 무엇을 놓치고 있습니까?
package program11;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class ArraySearch {
public static void main(String[] args) {
double[] arrayBuild = new double[10];
Scanner input = new Scanner(System.in);
int reply = 2;
for (int i = 0; i < arrayBuild.length; i++) {
System.out.print("Enter a number.");
arrayBuild[i] = input.nextDouble();
}
while (reply != 1) {
System.out.print("Enter a number to search for ");
double objective = input.nextDouble();
arraySort(arrayBuild);
double linearResult = linearCheck(arrayBuild, objective);
if (objective >= 0) {
System.out.println("Linear search found at index: " + linearResult);
}
else {
System.out.println("Not Found (linear)");
}
double binaryResult = binaryCheck(arrayBuild, objective);
if (objective >= 0) {
System.out.println("Binary search found at index: " + binaryResult);
}
else {
System.out.println("Not Found (binary)");
}
reply = JOptionPane.showConfirmDialog(null, "Continue?");
}
}
public static void arraySort(double[] arrayBuild) {
for (int i = 1; i < arrayBuild.length; i++) {
double currentPoint = arrayBuild[i];
int r;
for (r = i - 1; r >= 0 && arrayBuild[r] > currentPoint; r--) {
arrayBuild[r + 1] = arrayBuild[r];
}
arrayBuild[r + 1] = currentPoint;
}
}
public static double linearCheck(double[] arrayBuild, double objective) {
for (int i = 0; i < arrayBuild.length; i++) {
if (objective == arrayBuild[i])
return i;
}
return -1;
}
public static double binaryCheck(double[] arrayBuild, double objective) {
int low = 0;
int high = arrayBuild.length - 1;
while (high >= low) {
int mid = (low + high)/2;
if (objective < arrayBuild[mid])
high = mid - 1;
else if (objective == arrayBuild[mid])
return mid;
else
low = mid + 1;
}
return -low - 1;
}
}
내가 보는 행동과 다르다. 배열을 어디에서 정렬합니까? –
도 나를 위해 작동 – Chris
arraySort 메서드 아래에 배열을 정렬합니다. 그것은 당신을 위해 일하고 있습니까? 10을 입력하면 1이 포함되고 검색 대상으로 1을 선택하면 찾을 수없는 응답이 표시됩니다. =/ – user1082706