Anfängerfrage

ArneZank

Grünschnabel
Moin...
wie der Titel sagt bin ich Anfänger und hab versucht 'ne Methode Mult zu erstellen, die anhand der russischen Bauernmultiplikation 2 Zahlen miteinander multipliziert und um das zu testen einfach in der main-Methode ne Ausgabe des Ergebnisses.

Und so sieht mein Code aus:

public class Produkt{

private int a;
private int b;
private int ergebnis;

public int Mult(int a, int b){
ergebnis = 0;
while (a > 0){
if (a % 2 == 1){
ergebnis = ergebnis + b;
}
b = b + b;
a = a >> 1;
}
return ergebnis;
}

public static void main(String args[]){

System.out.println("4 * 8 = " + Mult(4, 8));
}
}​


beim compilieren bekomm ich folgende Fehlermeldung:

Produkt.java:21: non-static method Mult(int,int) cannot be referenced from a static context

System.out.println("4 * 8 = " + Mult(4, 8));

^


Kann mir da einer helfen?
 
Wie du siehst steht in der main ein static drin. Und aus static Methoden kann man nur alle static Methoden aufrufen. Static bedeutet dass etwas nur einmal pro Klasse existiert während alles andere einmal pro Objekt existiert.

Schreib also ein static zu deiner Methode mult dazu und schreibe die Methode am Besten direkt klein wenn du Java erst lernst: Klassen beginnen mit großem Buchstaben alles andere (bis auf Konstanten) mit Kleinem Buchstaben. Kannst gerne unter CamelCase mal suchen ;)
 
Danke für die schnelle Antwort, klappt aber immer noch nich, wenn ich die Methode als static mach, sagt er ich soll die "ergebnis" auch als static deklarieren, was die Methode dann ganz schnell überflüssig macht, da ergebnis dann immer "0" ist!?

Steh mit Java irgendwie auf Kriegsfuß
 
Code:
public class Main{

private int a;
private int b;
private int ergebnis;

public int Mult(int a, int b){
ergebnis = 0;
while (a > 0){
if (a % 2 == 1){
ergebnis = ergebnis + b;
}
b = b + b;
a = a >> 1;
}
return ergebnis;
}

public static void main(String args[]){
new Main();
}
public Main()
{
System.out.println("4 * 8 = " + Mult(4, 8));
}
}
 
das geht auch

Code:
public class Main{

  private int a;
  private int b;
  private int ergebnis;

  public int Mult(int a, int b){
    ergebnis = 0;
    while (a > 0){
      if (a % 2 == 1){
      ergebnis = ergebnis + b;
      }
      b = b + b;
      a = a >> 1;
    }
  return ergebnis;
  }

 public static void main(String args[]){
     Main neuesObjekt = new Main();
     System.out.println("4 * 8 = " + neuesObjekt.Mult(4, 8));

 }
}

du kannst jetzt in der public static void main(String args[]) Methode mit neuesObjekt.Methodennahme aus der Main Klasse aufrufen. Beachte das neuesObjekt ein frei wähl barer Name ist^^. Mit Main neuesObjekt = new Main(); wurde einfach nur ein neues Objekt von der Klasse Main erzeugt.

sprich wenn du in deiner Main Klasse eine neue Mehtode namens Dif schreiben würdest könntest du sie in der public static void main(String args[]) Methode einfach mit neuesObjekt.Dif aufrufen.

LG
Poxy:)

PS: http://www.galileocomputing.de/openbook/javainsel7/ ist eine super seite für Anfänger^^.
 
Zurück