2016-04-07 16 views
-7

Das ist also die percentEven-Methode aus dem Java-Lehrbuch. Ich kann es nicht kompilieren und frage mich, ob ihr meinen Fehler sehen könnt.percentEven, wird nicht kompiliert

"Schreiben Sie eine Methode namens" percentEven ", die ein Array von Ganzzahlen als Parameter akzeptiert und den Prozentsatz der geraden Zahlen im Array als reelle Zahl zurückgibt."

das ist die Anleitung. das ist was ich bisher habe.

import java.util.*; 

public class percentEven { 

    public class void main (String [] args) { 
     int [] integers = {34, 56, 4, 17, 9, 83, -300, 5}; 
     int evenResult = percentEven (integers); 
     System.out.println (" The percent of even numbers is" +   evenResult + "."); 
    } 

    public class int percentEven (int [] integers) { 
     int count = 0; 
     int even = 0; 
     for (i=0,i<integers.length,i++){ 
     if (integers[i] % 2 == 0){ 
      even++; 
     } 
     count++; 
     } 
     count= (even/count)*100; 
     return count; 
    } 
} 
+0

Auch einige der seltsamen Abstand zu ignorieren, zum ersten Mal eine Frage hier posten. – Rallyman2150

+1

Wie hast du versucht, es zu kompilieren? Was war die Fehlermeldung? – Burkhard

+2

Der Modifikator 'class' sollte nur zum Einführen einer Klasse und nicht einer Methode verwendet werden. Entferne den Modifikator 'class' aus den Zeilen' 5' und '11', um zu beginnen. Überprüfen Sie auch Ihre Schleifen etwas. – Zulfe

Antwort

2

Sie deklarieren Ihre Methode falsch.

public class 

bezeichnet eine neue Klasse. Was Sie schreiben wollen, ist

public static int percentEven 

Ihre Schleife sollte auch durch; nicht, Zeichen.

2

Zuerst Änderung

public class int percentEven (int [] integers) { 

zu

public int percentEven (int [] integers) { 

percentEven ist eine Methode, keine Klasse.

Zweitens ändern

for (i=0,i<integers.length,i++){ 

zu

for (int i = 0;i < integers.length; i++){ 

IDE für Java-Entwicklung eine gute Idee :)

0

Mehrere Fehler im Code wäre:

  1. percentEven ist ein method keine Klasse, entfernen, dass die Schlüsselwort-Klasse

  2. Sie keine statische Verweis auf das nicht-statische Methode machen, so muß das Verfahren statisch sein muss

  3. die Variable i in der for-Schleife sein, erklärt und der Inhalt mit Semikolon nicht Kolon

endgültige Code:

public static void main(String[] args) { 
    int[] integers = { 
     34, 56, 4, 17, 9, 83, -300, 5 
    }; 
    int evenResult = percentEven(integers); 
    System.out.println(" The percent of even numbers is" + evenResult + "."); 
} 

public static int percentEven(int[] integers) { 
    int count = 0; 
    int even = 0; 
    for (int i = 0; i < integers.length; i++) { 
     if (integers[i] % 2 == 0) { 
      even++; 
     } 
     count++; 
    } 
    count = (even/count) * 100; 
    return count; 
} 
1

Sie hatten eine Reihe von Orten, an denen Sie class in einer Funktion geschrieben haben. Ihre main muss static sein. Da es eine andere Funktion percentEven aufruft, sollte diese Funktion auch static sein. Ich werde es vermeiden, hier auf weitere technische Details einzugehen.

For-Schleifen hatten ,, wo Sie ; benötigt.

Es gab einen Fehler in dem Teil, in dem Sie eine Prozentberechnung durchgeführt haben. int/int ergibt int; Also, 4/8 = 0.Die Multiplikation mit 100 macht so wenig wie keinen Unterschied. Du bekommst 0, wenn du 50 bekommen solltest. Ich habe es in double geändert, damit du die Arithmetik verstehen kannst. Es funktioniert jetzt.

Folgendes ist Arbeitscode.

public class PercentEven { 

    public static void main(String[] args) { 
     int[] integers = new int[]{34, 56, 4, 17, 9, 83, -300, 5}; 
     double evenResult = percentEven(integers); 
     System.out.println("The percent of even numbers is " + evenResult + "."); 
    } 

    public static double percentEven(int[] integers) { 
     int count = 0; 
     int even = 0; 
     for (int i = 0 ; i < integers.length ; i++){ 
     if (integers[i] % 2 == 0){ 
      even++; 
     } 
     count++; 
     } 
     return (100.0*even/count); 
    } 
} 
Verwandte Themen