اذهب إلى المحتوى

السؤال

نشر

يحدث الخطأ " not a statement " أثناء إستدعاء الدالة التالية:

public boolean binarySearch(int[] list, int target, int low, int high) {
        list ={"1,2,5,7,9,15"}; 
        target = 5;
        boolean result = binarySearch(list, target, 0, list.length-1);
        executions++;
        int mid = (low + high) / 2;
        if(!result){
            System.out.println("Target not found -- bad search.");
        }else{
            System.out.println("Target found -- sucessful search!");
        }    
        if (list[mid] == target) {
            return true;
        } else {
            if (low > high) {
                return false;
            } else {
                comparisons++;
                if (list[mid] < target) {
                    return binarySearch(list, target, mid + 1, high);
                } else {
                    return binarySearch(list, target, low, mid - 1);
                }
            }

لم أفهم ماذا تعني رسالة الخطأ ؟ وما هو الحل ؟

Recommended Posts

  • 0
نشر

الخطأ not a statement يعني أن التعبير الذي كتبه غير ذو معنى ولا يسمح به ويحدث لأسباب متعددة منها مثلاً ان تقوم بكتابة 

0;

او

a+b;

او حتى ان تستدعي دالة بدون كتابة الأقواس 

any;

اما في حالتك فأظن أن لديك مشكلة في السطر الأول في عملية اسناد القيم للمصفوفة لابد أن تكون كالتالي:

list [0] = {"اكتب القيم"};

 

  • 1
نشر

إن list هي مصفوفة أعداد من النوع int أي يجب أن تكتب الأعداد بدون " اقتباس ويفصل بينها فواصل.

int[] list ={1,2,5,7,9,15}; 

ويوجد أخطا في طريقة كتابة تابع البحث الثنائي حيث يجب أن تكون بالطريقة التالية:

import java.util.*;
import java.lang.*;
import java.io.*;
 
class Main {
	public static int executions = 0, comparisons = 0;
 
    public static void main(String[] args) throws java.lang.Exception {
        int[] list = {1,2,5,7,9,15};
        int target = 5;
 
 
        boolean result = binarySearch(list, target, 0, list.length - 1);
 
        if (!result) {
            System.out.println("Target not found -- bad search.");
        } else {
            System.out.println("Target found -- sucessful search!");
 
            System.out.println("executions: " + executions);
            System.out.println("comparisons: " + comparisons);
 
        }
    }
 
 
    public static boolean binarySearch(int[] list, int target, int low, int high) {
 
        executions++;
        int mid = (low + high) / 2;
 
        if (list[mid] == target) {
            return true;
        } else {
            if (low > high) {
                return false;
            } else {
                comparisons++;
                if (list[mid] < target) {
                    return binarySearch(list, target, mid + 1, high);
                } else {
                    return binarySearch(list, target, low, mid - 1);
                }
            }
        }
    }
}

وسيكون الخرج:

Target found -- sucessful search!
executions: 1
comparisons: 0

أي سيجد القيمة 5 من أول محاولة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...