Upn-Rechner

Status
Nicht offen für weitere Antworten.

F34RL355

Mitglied
Bin gerade dabei einen Upn Rechner zu erstellen...

Hab dafür einen eigene Klasse Stack mit Hilfe eines Arrays implementiert.
Java:
class Stack{

final int max = 20;
int [] stack = new int [max];
int size = 0;

public void push(int n){
stack[size++] = n;
}
public int pop(){
return stack[--size];
}

public boolean hasNext(){
return size != 0; 
}

//public String toString()

}

Nun hab ich noch eine Klasse, mit der Methode "readOperand" welche einen eingegebenen Int Wert auf den Stack ablegen soll.

Java:
class UpnCalculator{
  
  Stack stapel = new Stack();

  public void readOperand(int a){
  a.push();
}

public int readOperator(int operator){
    int zahl1 = stapel.pop(); 
  
}

}

Code:
UpnCalculator.java:7: int cannot be dereferenced
  a.push();
   ^
1 error

Kann mir da vll. jemand weiterhelfen :)
 
Zuletzt bearbeitet:

Arbon

Bekanntes Mitglied
Deine Methode push erfordert einen int als Argument, du übergibst ihm allerdings beim Aufruf mittels a.push(); gar nichts. Das nächstes problem ist, dass a ein int ist und nicht dein Stapel. also würde die Methode warscheinlich stapel.push(a); lauten, welche du eigendlich aufrufen möchtest.
 

madboy

Top Contributor
korrekt wäre
Java:
stappel.push(a);
a ist ein int und da gibt's keine Methode namens push :)
 

Leroy42

Top Contributor
Das muß stappel.push(a) heißen.

Übrigens:

- stappel sollte stapel heissen.
- Du fragst bei push nicht ab, ob dein size auch nicht größer als dein max wird-
 

Civilazi

Bekanntes Mitglied
Die Fehlermeldung sagt dir doch alles, was du brauchst. Du kannst nicht einfach eine objektmethode (push) von einem int aufrufen wollen. Wenn dir das nicht klar ist, google mal nach primitiven Datentypen. Du willst da stapel.push(a); (Stapel nur mit einem 'p')

EDIT: Ach Mist, einmal beim Beitragschreiben weggegangen und schon ist man einige Beiträge zu spät.
 

F34RL355

Mitglied
Danke euch allen !!

Bin selber grad draufkommen dass ich mich bei "stappel" verschrieben hab ^^

Auch danke für den Tipp, dass ich bei push das max nicht überprüf, hab das gleich geändert ...

Java:
  final int max = 19;
  int [] stack = new int [max];
  int size = 0;
  String ans = "";
  
  public void push(int n){
    if (size ==20){
    ans = "false";}
    stack[size++] = n;
  }
 

Leroy42

Top Contributor
Java:
  public void push(int n){
    if (size ==max) {
        System.out.println("Fehler: Stack läuft über";
        return;
   }
    stack[size++] = n;
  }
 

F34RL355

Mitglied
So eine Frage hab ich jetzt noch:

Java:
class Stack{
  
  final int max = 19;
  int [] stack = new int [max];
  int size = 0;
  String ans = "";
  
  public void push(int n){
    if (size ==20){
      ans = "false";
    }
    stack[size++] = n;
  }
  public int pop(){
    return stack[--size];
  }
  
  public boolean hasNext(){
    return size != 0; 
  }
  
  public String toString(){
  return "0 = " + stack[0];  
  
  }    
}

Java:
class UpnCalculator{
  
  Stack stapel = new Stack();

  public void readOperand(int a){
  stapel.push(a);
}

public void readOperator(int operator){
    int zahl1 = stapel.pop();
    int zahl2 = stapel.pop();
    
    int sum = zahl1+zahl2;
    
    stapel.push(sum);
  
}
}

ZUM TESTEN:

Java:
import java.util.Scanner;

class UpnApplication{

public static void main (String [] args){

 
  Scanner reader = new Scanner(System.in);
  
Stack stapel = new Stack();   
UpnCalculator test = new UpnCalculator();

stapel.push(5);
stapel.push(2);
test.readOperator(1);

System.out.print(stapel);

}
}

Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
        at Stack.pop(Stack.java:15)
        at UpnCalculator.readOperator(UpnCalculator.java:10)
        at UpnApplication.main(UpnApplication.java:15)
 

F34RL355

Mitglied
Kanns vielleicht sein, dass ich 2 unterschiedliche Stacks hab und ich mich deshalb bei "readOperator" in einem anderen Stack befind, dass noch gar keine Daten enthält ?
 

Ein Keks

Bekanntes Mitglied
jep genau das ist das problem test hat eine instanz von stack du addest aber nur auf die instanz in UpnApplication und willst dann von der instanz aus test auslesen
 

F34RL355

Mitglied
Okay, Danke !

Ich steh aber grad ein bissl an, hättest du vielleich einen kleinen Hinweis für mich, wie ich das richtig hinbekomm :bahnhof:

Nur ein kleiner Schubser in die richtige Richtung :)
 

faetzminator

Gesperrter Benutzer
Du kannst doch einfach statt ersterem letzteres schreiben?
Java:
stapel.push(5);
stapel.push(2);
test.readOperator(1);
Java:
test.readOperand(5);
test.readOperand(2);
test.readOperator(1);
 

F34RL355

Mitglied
Vielen Dank ^^ Da hätt ich eigentlich selber draufkommen müssen ...!

Java:
 public String toString(){
   for (int i=0; i<=size; i++){
   return stack[i] + "\n";   }
}

Haste vll. auch einen Tipp für das Problem ! Ich würd gern die Elemente des Stacks ausgeben, wobei nach jedem ein Zeilenvorschub sein soll !

mit System.out.print wärs ja einfach, aber gibts auch 'ne möglichkeit mit return ??
 

faetzminator

Gesperrter Benutzer
Ich würd so was machen:
Java:
public String toString() {
    String str = "[";
    for (int i = 0; i <= size; i++) {
        str += "\n\t" + stack[i];
    }
    str += "\n]";
    return str;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
T BMI Rechner fehlerhaft Java Basics - Anfänger-Themen 18
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
Alan6 Java Editor BMI Rechner Java Basics - Anfänger-Themen 7
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
M Rechner programmieren Java Basics - Anfänger-Themen 3
Z BMI-Rechner Java Basics - Anfänger-Themen 1
F Trinkgeld Rechner und Promillenrechener Hilfe Java Basics - Anfänger-Themen 3
R java.lang.ArrayIndexOutOfBoundsException: 0 Rechner Error Java Basics - Anfänger-Themen 4
S Erste Schritte Java GUI - Rechner erstellen Java Basics - Anfänger-Themen 4
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8
J double_Problem im ZinsesZins Rechner Java Basics - Anfänger-Themen 33
K (Taschen)Rechner Java Basics - Anfänger-Themen 8
M Abitur-Noten-Rechner Java Basics - Anfänger-Themen 2
G Welche Java-Version auf meinem Rechner? Java Basics - Anfänger-Themen 2
B Strategy Pattern - Rechner Java Basics - Anfänger-Themen 6
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
thet1983 rechner anfaengerfehler? Java Basics - Anfänger-Themen 10
B BMI Rechner Java Basics - Anfänger-Themen 2
H DriveByZero Exception - BMI-Rechner Java Basics - Anfänger-Themen 12
B Co2 rechner hilfe beim programmieren Java Basics - Anfänger-Themen 10
P Bitte um hilfe bei einfachem Rechner Java Basics - Anfänger-Themen 7
B Std-Serialisierung - Speichern/Laden geht nur auf einem Rechner Java Basics - Anfänger-Themen 17
C Rechner Java Basics - Anfänger-Themen 19
B Verbindung zu einen anderen Rechner Java Basics - Anfänger-Themen 2
N Datenaustausch zweier rechner Java Basics - Anfänger-Themen 4
M BMI-Rechner NumberFormatException Java Basics - Anfänger-Themen 30
Jats Kosinussatz-Rechner Java Basics - Anfänger-Themen 9
Haave Postfix-Rechner: mehrere math. Operationen nacheinander ausführen Java Basics - Anfänger-Themen 8
C Bmi rechner programmieren Java Basics - Anfänger-Themen 72
B JavaWebStart - Anwendung läuft nur auf einem Rechner Java Basics - Anfänger-Themen 6
P Einfacher Rechner Java Basics - Anfänger-Themen 2
P UPN Rechner Java Basics - Anfänger-Themen 1
B mit Wecker den Rechner aus Standby/Ruhemodus holen Java Basics - Anfänger-Themen 19
R Jar Datei läuft auf neuem Rechner nicht mehr Java Basics - Anfänger-Themen 15
Developer_X Applet auf lokalem Rechner mit der EingabeAufforderung Starten Java Basics - Anfänger-Themen 44
S Was ist falsch an meinem Rechner? Java Basics - Anfänger-Themen 7
M externes Programm auf anderen Rechner ausführen lassen Java Basics - Anfänger-Themen 2
kulturfenster Wie implementiert man einen Rechner in Java? Java Basics - Anfänger-Themen 5
kulturfenster Rechner und ActionListener Java Basics - Anfänger-Themen 11
C DM -> Euro Rechner aber nur mit Operanden des Typs intege Java Basics - Anfänger-Themen 12
G Java Rechner Java Basics - Anfänger-Themen 10
G frage bluej für bmi rechner programmieren Java Basics - Anfänger-Themen 5
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
C Problem mit dem Rechner Java Basics - Anfänger-Themen 4
G Rechner aus ! Java Basics - Anfänger-Themen 5
M Exel-Rechner in Java ausgeben Java Basics - Anfänger-Themen 13
N Java Rechner Java Basics - Anfänger-Themen 3
D Java Rechner und Einlesen Problem (mit hasNext) Java Basics - Anfänger-Themen 2
W Rechner von quadratzahlen ! fehler Java Basics - Anfänger-Themen 4
P Rechner ^^ Java Basics - Anfänger-Themen 10
K BMI Rechner - wo ist der Fehler? Java Basics - Anfänger-Themen 4
D Rechner programmieren Java Basics - Anfänger-Themen 5
P Mediacenter Userinterface auf langsamem Rechner Java Basics - Anfänger-Themen 5
M Windows Projekt auf Linux Rechner Java Basics - Anfänger-Themen 2
B komische NumberFormatException beim DezimalToBinär-Rechner Java Basics - Anfänger-Themen 4
lan2711 Class Dateien auf anderen Rechner zum Laufen kriegen. Java Basics - Anfänger-Themen 5
P Program funktioniert nur bei Rechner die jdk haben Java Basics - Anfänger-Themen 4
rambozola jar-datei von cd auf rechner ohne jvm starten Java Basics - Anfänger-Themen 2
N SSH-Verbindung zu entferntem Rechner aufbauen Java Basics - Anfänger-Themen 5
L Class-Datei auf anderem Rechner Java Basics - Anfänger-Themen 9
H JDK 1.4.2 UND 1.1.8 auf gleichem Rechner Java Basics - Anfänger-Themen 15
X Programmstart auf anderem Rechner... Java Basics - Anfänger-Themen 15
C Java soll Datei auf rechner Finden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben