2016-11-26 4 views
-2

Ich habe verschiedene Dinge in meinem Code versucht, aber ich bekomme immer Fehler. Die Anweisungen für das Programm ist, dass ich eine Funktion (neben Main) haben muss, die Argumente für ein Array von Integer-Werten empfängt, und ein zweites Argument, das den Wunschwert angibt, in dem Array durch den Benutzer zu suchen.
Es muss auch zurückgegeben werden, wie oft der Wunschwert auf dem Array wiederholt wird.
Die Fehler beziehen sich auf den Zähler und einige sind auch in der Hauptfunktion.
Ich denke, ich gebe den Zählerwert nicht korrekt zurück.Java Rückgabe (Wert) Fehler

Dies ist mein aktueller Code:

import java.util.Scanner; 
    import java.util.Arrays; 

    public class ArregloBusqueda2 
    { 
    static int findRepetition(int listOfValues[], int targetValue, int counter) 
    { 
     int i; 
     boolean found = false; 

     for(i=0; i<listOfValues.length; i++) 
     { 
      while((counter < listOfValues.length)) 
       { 
       if(listOfValues[i] == targetValue) 
        { 
         counter = counter + 1; 
        } 
       } 
     } 
     return counter; 
    } 


    public static int main(String[] args) 
    { 
     Scanner input = new Scanner (System.in); 

     int targetValue; 
     int listOfValues[] = {1,6,3,8,5,8,3,4,8,3}; 

     System.out.println("Please enter the desire number to look for: "); 
     targetValue=input.nextInt(); 

     findRepetition(targetValue, counter); 


     if(counter != 0) 
     { 
      System.out.println("The frequency of the number " + targetValue + " is: " + counter); 
     } 
     else 
     { 
      System.out.println ("The number " + targetValue + " is not contained  in the array list"); 
     } 
    } 
} 
+0

'findRepetition' ** ** gibt einen Wert, aber Sie erfassen es nicht. –

+0

Fehler ist auch "kann Symbol nicht finden"? Wie erkennt 'findRepetition (targetValue, counter);' 'counter''? –

+0

ja, der Fehler ist nicht Symbol finden. – sprakera

Antwort

1

Mehrere Probleme in Ihrem Code.

  1. public static int main(String[] args) sollte public static void main(String[] args)
  2. findRepetition hat drei Argumente, aber sie sind vorbei zwei agruments
  3. counter Variable nicht deklariert
  4. Logische Fehler, while((counter < listOfValues.length)) auf die Ausführung halten, wenn Zählerwert geringer ist als listOfValues.

    static int findRepetition(int listOfValues[], int targetValue) { 
        int i; 
        int counter = 0; 
    
        for (i = 0; i < listOfValues.length; i++) { 
         if (listOfValues[i] == targetValue) { 
          counter = counter + 1; 
         } 
        } 
        return counter; 
    } 
    
    public static void main(String[] args) { 
        Scanner input = new Scanner(System.in); 
    
        int targetValue; 
        int listOfValues[] = { 1, 6, 3, 8, 5, 8, 3, 4, 8, 3 }; 
    
        System.out.println("Please enter the desire number to look for: "); 
        targetValue = input.nextInt(); 
    
        int counter = findRepetition(listOfValues, targetValue); 
    
        if (counter != 0) { 
         System.out.println("The frequency of the number " + targetValue + " is: " + counter); 
        } else { 
         System.out.println("The number " + targetValue + " is not contained  in the array list"); 
        } 
    
    } 
    
+0

OMG! Ich danke dir sehr!!!! – sprakera

+1

Es läuft endlich. Ich werde weiter studieren, wie ich zurückkomme, usw., damit ich jeden Tag ein bisschen mehr Stand halten kann. – sprakera

0

Sie haben Ihre Methode drei Parameter akzeptieren.

static int findRepetition(int listOfValues[], int targetValue, int counter) 

Fragen Sie sich - wollen Sie „in einem Zähler passieren“, oder es nur return? Die Anweisungen sagen Letzteres.


Wenn Sie diese Methode aufrufen, liefern Sie nicht die richtigen Eingaben.

findRepetition(targetValue, counter); 

Was ist mit der listOfValues? Sie möchten findReptition auf listOfValues für targetValue, richtig? Stellen Sie dem Methodenaufruf die richtigen Parameter bereit.

Auch hier benötigen Sie wahrscheinlich nicht die counter übergeben. Da Java is always pass-by-value


Vielmehr möchten Sie return counter, wie Sie geschrieben haben. Sie suchen das.

int counter = findRepetition(listOfValues, targetValue); 

den Rest des Codes der Festlegung eines Lernübung.

0

Sie rufen findRepetition() nicht mit den erforderlichen Parametern auf, findRepetition-Methode benötigt 3 Argumente, aber Sie übergeben nur 2 Argumente.