non-static variable cannot be referenced from a static context

Hey :)
ich bin noch ein Anfänger und stehe vor folgendem Problem:


Code:
import java.util.Scanner;
public class Eingabe {
double sum = 0.0;
int teiler = 0;
public static double durchschnitt(Scanner sc) {
while(sc.hasNext()) {
sum = sum + sc.nextDouble();
++teiler;
  }
  return sum/teiler;
 }
}
ich kriege für diesen Code diese Fehlermeldung:

Eingabe.java:7: error: non-static variable sum cannot be referenced from a static context
sum = sum + sc.nextDouble();
^
Eingabe.java:7: error: non-static variable sum cannot be referenced from a static context
sum = sum + sc.nextDouble();
^
Eingabe.java:8: error: non-static variable teiler cannot be referenced from a static context
++teiler;
^
Eingabe.java:10: error: non-static variable sum cannot be referenced from a static context
return sum/teiler;
^
Eingabe.java:10: error: non-static variable teiler cannot be referenced from a static context
return sum/teiler;
^
5 errors


Nun habe ich natürlich schon ein bisschen gegoogelt und gelesen, ich soll new vor eine Variable schreiben oder static. Nur kam das noch nicht in der Vorlesung vor und darf deshalb nicht benutzt werden.
Ich bin dankbar für jede Hilfe
LG!
 
Der Hinweis, die Variablen in die Methode zu schieben, ist nicht falsch. Im konkreten Fall kompiliert der Code damit fehlerfrei tut aber sonst nichts... Und Stackoverflow darf man wohl benutzen: https://stackoverflow.com/questions/10887498/calculate-average-with-user-input
Was meinst Du mit "tut aber sonst nichts..."?

Der Code funktioniert dann einwandfrei, so der Scanner "endet". Das ist eine Problematik, die hier nun einmal als Abbruch der Schleife gewählt wurde. Bei System.in wäre das leider nicht gegeben.

Aber den folgenden Code hatte ich ja bereits einmal gepostet nur leider ist er mit gelöscht worden:

Java:
package de.javaforum;

import java.util.Scanner;

public class ScannerUtil {
    /**
     * Calculates the average of double values read from a scanner.
     * @param scanner Scanner to read double elements from.
     * @return Average of provided double values.
     */
    public static double calcAverage(Scanner scanner) {
        double total = 0.0;
        int count = 0;
        while(scanner.hasNext()) {
            total = total + scanner.nextDouble();
            ++count;
        }
        return total/count;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner("1 2 3 4");
        System.out.println(calcAverage(scanner));
    }
}
Das ist der Code mit Instanzvariablen als lokale Variablen und paar einfachen Umbenennungen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben