Error: int cannot be dereferenced

HeyHo,
Ich habe letzte Nacht zur Übung ein Programm geschrieben, wo bei mir eine Fehlermeldung angezeigt wurde/wird, die ich nicht verstehe und auf die ich keine Antwort gefunden habe im Internet/ keine Lösung auf Deutsch bzw. die auf meinem Niveau ist. Deshalb habe ich mir gedacht, frage ich doch hier mal nach.
Code:
Java:
// Funktion Random Genarator für gewünschte Anzahl von Zahlen mit eingebarer Reichweite udn Start Button.
//17.03.2017 23:42 Uhr

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Apllet1 extends Applet implements ActionListener, AdjustmentListener{
  private  Scrollbar anzahlZahlen;
  private int zahlenValue=0;

  private Button btnStart;
  private int count=0;

  private TextField höheZahlen;
  private double [] intArray = new double [zahlenValue];
  
  boolean startProgramm = false;

  public void init(){
    setSize(550,100);
    anzahlZahlen= new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100);
    add(anzahlZahlen);
    anzahlZahlen.addAdjustmentListener(this);
  
    btnStart = new Button("Starte die Zahlen x");
    add(btnStart);
    btnStart.addActionListener(this);
  
    Label labhöheZahlen = new Label ("0 bis welcher Zahl soll es gehen?");
    höheZahlen = new TextField (10);
    add(höheZahlen);
  
    }
  
  public void  actionPerformed (ActionEvent event){
    int höheZahlen;
    if (event.getSource()==btnStart){
      höheZahlen=Integer.parseInt(höheZahlen.getText());
      for(int i=0;i<=zahlenValue;i++) {
      intArray[i] = (int) (Math.random()*(float)höheZahlen); 
      } // end of for
    } // end of if
   
    startProgramm=true;
    repaint();
    }
   
  public void paint (Graphics g) {
    int xP=65;
    int yP=100;
    if (startProgramm=true) {
      g.drawString("Hier sind deine Random Zahlen: ",50,100);
      for(int z=0;z<=zahlenValue;z++) {
         g.drawString(""+intArray[z] ,xP,yP);
         xP=xP+15;
        if (xP>400) {
          yP=yP+15;
        } // end of if
      } // end of for
    } // end of if
    }
   
  public void adjustmentValueChanged (AdjustmentEvent e){
    zahlenValue= anzahlZahlen.getValue();
    repaint();
    }
  }
Folgende Fehlermeldung trat dann auf:
Code:
Apllet1.java:41:45: error: int cannot be dereferenced
      höheZahlen=Integer.parseInt(höheZahlen.getText());
Danke für eure Hilfe im voraus.
 
Zuletzt bearbeitet von einem Moderator:
Du hast eine globale Variable vom Typ TextField mit dem Namen höheZahlen und eine lokale int Variable die genauso heißt.

höheZahlen=Integer.parseInt(höheZahlen.getText());
Du versuchst hier also die Methode getText() auf den primitiven Datentyp int anzuwenden - was nicht funktioniert. Du kannst keine Methoden auf primitive Datentypen (int, double,..) anwenden.

Entweder gewöhnst du dir an "ordentliche" Variablennamen zu nehmen - und vor allem nicht 2 mal den selben - oder du greifst mittels des this Operators auf die globale Variable höheZahlen - damit auf das TextField - zu.

Also entweder:
Java:
private TextField tfMaxNumbers;

...

public void actionPerformed(ActionEvent e)
{
    int maxNumbers = Integer.parseInt(tfMaxNumbers.getText());
     ....
}
oder

Java:
private TextField maxNumbers;

...

public void actionPerformed(ActionEvent e)
{
    int maxNumbers = Integer.parseInt(this.maxNumbers.getText());
}
Wobei ich dir von der letzten Lösung abraten würde.

Noch 2 kleine Hinweise:
- Das nächstes mal bitte Stacktrace und Code getrennt in [code=Java]MY CODE[/code] Tags posten.
Das kann man dann besser lesen / zitieren :)
- Vermeide Umlaute in der Programmierung - das kann zu Problemen führen :)

Gruß Robert
 
Für ein Schulprojekt habe ich den selben Fehler, komme jedoch nicht auf die Lösung für das Problem.
Code:
try(int neuerCocktail = cocktail.lesen1()){
if(neuerCocktail == 1){
...
}
}catch (InterruptedException e){
System.err.println(e);
}
Beim Methodenaufruf kommt die Fehlermeldung int cannot be dereferenced.
Cocktail. ist ein Objekt der Klasse Cocktail. Daraus die Methode lesen.
Code:
public int lesen() throws InterruptedException {
final GpioController gpio = GpioFactory.getInstance();
final GpioPinDigitalInput myButton1 = gpio.provisionDigitalInputPin(RaspiPin.Gpio_04, PinPullResistance.Pull_DOWN);
int neuerCocktail1 = 0;
if(myButton1.getState() == PinState.HIGH){
neuerCocktail1 = 1;
}
return neuerCocktail1;
}
 
Das, was aktuell in den normalen Klammern hinterm try steht, sollte runter gezogen werden in den Block.

(Die normalen Klammern nutzt man für try-with-resources, dort gibt man AutoCloseable's an, die automatisch geschlossen werden sollen - ein int ist aber offensichtlich nichts derartiges ;) )
 
Code:
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Container;
import java.util.*;

public class Frame extends JFrame
{
    private  int nummer1;
    LinkedList<Integer> list = new LinkedList<Integer>();
    LinkedList<Integer> list2 = new LinkedList<Integer>();
    private int cocktail1;
    private int nummer2 = 0;
    private int cocktail2;
    private  int  nummer3;
    //private int neuerCocktail;
    //private int fertig;
    Server server;
    public    Panel1 p1 = new Panel1();
    public    Panel2 p2 = new Panel2();
    public    Panel1 p3 = new Panel1();
    public    Panel4 p4 = new Panel4();
    public    Panel5 p5 = new Panel5();
    public    Panel6 p6 = new Panel6();
    public    Panel7 p7 = new Panel7();
    public    Panel8 p8 = new Panel8();
    public    Panel9 p9 = new Panel9();
    public    Panel10 p10 = new Panel10();
    public    Panel11 p11 = new Panel11();
    public    Panel12 p12 = new Panel12();
    public    Panel13 p13 = new Panel13();
    public    Panel14 p14 = new Panel14();
    public    Panel15 p15 = new Panel15();
    public    Panel16 p16 = new Panel16();
    public    Panel17 p17 = new Panel17();
  
    //Server server1 = new Server(49566);
    private int i = 0;
    Cocktail cocktail = new Cocktail();
    public Frame()
    {
        super("Bildschirmausgabe");
        //this.server = server;
        // Server server = new Server(49566);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setBackground(Color.white);
        c.setLayout(null);
        setVisible(true);
      
        p2.setBounds(40, 10, 200, 40);
        p1.setBounds(40, 60, 90, 40);
        p3.setBounds(40, 110, 90, 40);
        p4.setBounds(40, 160, 90, 40);
        p5.setBounds(40, 210, 90, 40);
        p6.setBounds(40, 260, 90, 40);
        p7.setBounds(40, 310, 90, 40);
        p8.setBounds(40, 360, 90, 40);
        p9.setBounds(150, 60, 90, 40);
        p10.setBounds(150, 110, 90, 40);
        p11.setBounds(150, 160, 90, 40);
        p12.setBounds(150, 210, 90, 40);
        p13.setBounds(150, 260, 90, 40);
        p14.setBounds(150, 310, 90, 40);
        p15.setBounds(150, 360, 90, 40);
        p16.setBounds(270, 10, 330, 40);
        p17.setBounds(270, 60, 330, 340);
      
        c.add(p1);
        c.add(p4);
        c.add(p5);
        c.add(p6);
        c.add(p7);
        c.add(p8);
        c.add(p9);
        c.add(p10);
        c.add(p11);
        c.add(p12);
        c.add(p13);
        c.add(p14);
        c.add(p15);
        c.add(p16);
        c.add(p17);
        
        
        setSize(500, 500);
        setVisible(true);
        //Server server1 = new Server(49566);
        //server1.startServer();
    }
    public  void nummer( int nummer, int cocktail){
        this.cocktail1 = cocktail;
        nummer1 = nummer;
        int y = 0;
        //while(true){
          
            
            
            int neuerCocktail;
            int fertig;
            
            if (nummer1 == nummer2){
            
            }
            else{
                list.add(i,nummer1);
                list.add(i,cocktail1);
                nummer2 = nummer1;
                i++;
                if (i<=27){
                    switch (y){
                        case 0:
                            nummer3 = list.get(0);
                            
                            p1.wert(nummer3);
                            y = 1;
                            
                        case 1:
                            nummer3 = list.get(1);
                            p3.wert(nummer3);
                            y = 2;
                            
                        case 2:
                            nummer3 = list.get(2);
                            p4.wert(nummer3);
                            y = 3;
                            
                        case 3:
                            nummer3 = list.get(3);
                            p5.wert(nummer3);
                            y = 4;
                            
                        case 4:
                            nummer3 = list.get(4);
                            p6.wert(nummer3);
                            y = 5;
                            
                        case 5:
                            nummer3 = list.get(5);
                            p7.wert(nummer3);
                            y = 6;
                          
                        case 6:
                            nummer3 = list.get(6);
                            p8.wert(nummer3);
                            y = 7;
                          
                        case 7:
                            nummer3 = list.get(7);
                            p9.wert(nummer3);
                            y = 8;
                          
                        case 8:
                            nummer3 = list.get(8);
                            p10.wert(nummer3);
                            y = 9;
                          
                        case 9:
                            nummer3 = list.get(9);
                            p11.wert(nummer3);
                            y = 10;
                          
                        case 10:
                            nummer3 = list.get(10);
                            p12.wert(nummer3);
                            y = 11;
                          
                        case 11:
                            nummer3 = list.get(11);
                            p13.wert(nummer3);
                            y = 12;
                            
                        case 12:
                            nummer3 = list.get(12);
                            p14.wert(nummer3);
                            y = 13;
                            
                        case 13:
                            nummer3 = list.get(13);
                            p15.wert(nummer3);
                            y = 14;
                            
                        
                    }
                
            }   
        //}
    
    }
    try{
    int neuercocktail = cocktail.lesen1();
        if (neuerCocktail == 1){
            cocktail.port(list2.get(0));
            cocktail2 = list.get(0);
            p16.wert(cocktail2, 0);
            list.removeFirst();
            list2.removeFirst();
        }
    }catch (InterruptedException e) {
        System.err.println(e);
    }
    
    try{
    int fertig = cocktail.lesen2();
        if(fertig ==1){
            p16.wert(cocktail2, 1);
        }
    }catch (InterruptedException e) {
        System.err.println(e);
    }
    
            
     setVisible(true);
    }
}
Code:
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.PinPullResistance;
/**
 * Write a description of class Verarbeitung here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Cocktail{
    private int nummer;
    private boolean l=true;
    private int x = 0;
    private int y = 0;
  public int neuerCocktail;
  public Cocktail()  {
      
      
      
  }   
 
  public void port(int nummer) throws InterruptedException {
      
      final GpioController gpio = GpioFactory.getInstance();
      
      GpioPinDigitalOutput[] pins = new GpioPinDigitalOutput[3];
      
      pins[0] = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_00, "MyLED", PinState.LOW); //GPIO 11
      pins[1] = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.LOW); //GPIO 12
      pins[2] = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_02, "MyLED", PinState.LOW); //GPIO 13
      pins[3] = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_03, "MyLED", PinState.LOW); //GPIO 15
      int i= nummer;
      x =1;
      y = 0;
      switch(i){
          case 0:
            break;
          case 1:
            pins[0].high();;
            Thread.sleep(100);
            pins[0].low();;
            break;
          case 2:
            pins[1].high();;
            Thread.sleep(100);
            pins[1].low();;
            break;
          case 3:
            pins[2].high();;
            Thread.sleep(100);
            pins[2].low();;
            break;
          case 4:
            pins[3].high();;
            Thread.sleep(100);
            pins[3].low();;
            break;
          default:
            l= false;
      
  }
 
}
public  int lesen1() throws InterruptedException {
    final GpioController gpio = GpioFactory.getInstance();
    final GpioPinDigitalInput myButton1 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_04, PinPullResistance.PULL_DOWN); //PORt16
    
     int neuerCocktail1 = 0;
     int ja = 0;
        if(myButton1.getState() == PinState.HIGH){
             ja = 1;
            
        }
        if (ja == 1) {           
            neuerCocktail1 = 1;
            }
        

        return neuerCocktail1;
    
}
public  int lesen2() throws InterruptedException {
    final GpioController gpio = GpioFactory.getInstance();
    final GpioPinDigitalInput myButton2 = gpio.provisionDigitalInputPin(RaspiPin.GPIO_05, PinPullResistance.PULL_DOWN); // Port18
     int fertig1 = 0;
    if(myButton2.isHigh()){
        fertig1 = 1;
    }
    return fertig1;
}
}
 
Da werden mindestens zwei Fehler angezeigt, aber keiner von beiden ist der ursprüngliche...

Beide solltest du problemlos lösen können, dazu sollten die Fehlermeldungen ausreichen :)
 
Java has two different types of variables: primitive and objects and only objects are reference types. The type int is a primitive and not an object. Dereferencing is the process of accessing the value referred to by a reference. Since, int is already a value, it can not be dereferenced . Primitives (byte, char, short, int, long, float, double, boolean) are not objects and do not have variable or methods. They're just simple values. So you can not do somePrimitive.something ().

It is actually laying out in the memory. Thus, we can say that accessing the state or behavior of an object using its reference with the help of the dot (.) Operator is called dereferencing.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben