Value-returing Methode funktioniert nicht

minni.maus

Mitglied
Hallo,

wir beginnen gerade mehrere Methoden in Java zu schreiben (nicht mehr nur die main methode)
und habe bei diesem kurzen code ein Problem. Ich bekomme entweder die Meldung dass ein "static method cannot be referenced from a static context" nicht geht, oder es zeigt eine fehlermeldung beim aufrufen der methode. ich habe schon das tutorial zu dem 1. problem gelesen und auch viel herumprobiert, aber es haut immer noch nicht hin. Kann es sein, dass es an dem Scanner object liegt? Habe einen anderen kleinen Code ohne Scanner und da funktioniert es...
wär nett, wenn ihr einen kurzen blick drauf werfen könntet 🙂
lg

Java:
 //this program shows Retail Price Calculator

import java.util.Scanner;

public class ChallengeTwo
{	
	double wholesale;
	double markupPercentage;
	double retailPrice;
	
	public static void main (String [] args) throws IOException //wegen Scanner objekt
	{	
		Scanner keyboard = new Scanner(System.in);
				
		System.out.print("Enter the wholesale cost of an item: ");
		wholesale = keyboard.nextDouble();
		
		System.out.print("Enter the markup percentage: ");
		markupPercentage = keyboard.nextDouble();
	
		
		 //methode aufrufen
		calculateRetail(wholesale, markupPercentage);
				
		System.out.println("The retail price is " + retailPrice);
	
	}
	
	public static double calculateRetail (double wholesale, double markupPercentage)
	{	
	
		retailPrice = wholesale * markupPercentage/ 100 + wholesale;
		
		return retailPrice;
	}
	
	
	
	
	
}
 
Du hast nur statische Methoden, kein Objekt von ChallengeTweo aber deklarierst
Java:
  double wholesale;
    double markupPercentage;
    double retailPrice;

Du solltest dir evtl. das Kapitel zu
Code:
static
mal durchlesen! (gibt auch jede Menge FAQ-Eintrage hier 😀 )
 
Du hast nur statische Methoden, kein Objekt von ChallengeTweo aber deklarierst
Java:
  double wholesale;
    double markupPercentage;
    double retailPrice;

Du solltest dir evtl. das Kapitel zu
Code:
static
mal durchlesen! (gibt auch jede Menge FAQ-Eintrage hier 😀 )

Oder du deklarierst die Variablen innerhalb der Methoden wie folgt:

Java:
public class ChallengeTwo {

//    double wholesale;
//    double markupPercentage;
//    double retailPrice;
    
    public static void main (String [] args) throws IOException //wegen Scanner objekt
    {   
        Scanner keyboard = new Scanner(System.in);
                
        System.out.print("Enter the wholesale cost of an item: ");
        double wholesale = keyboard.nextDouble();
        
        System.out.print("Enter the markup percentage: ");
        double markupPercentage = keyboard.nextDouble();
    
        
         //methode aufrufen
        double price = calculateRetail(wholesale, markupPercentage);
                
        System.out.println("The retail price is " + price);
    
    }
    
    public static double calculateRetail (double wholesale, double markupPercentage)
    {   
    
        double retailPrice = wholesale * markupPercentage/ 100 + wholesale;
        
        return retailPrice;
    }
}
 
Das double bei
Java:
public static void  calculateRetail (double wholesale, double markupPercentage)
solltest du durch void ersetzen, da du sonst aus
Java:
calculateRetail(wholesale, markupPercentage);
das hier
Java:
double X=calculateRetail(wholesale, markupPercentage);
(Dadurch das du einen Wert zurückgibst)machen müstest und du durch das public static überall zugriff auf die Variable hast.
 
Sehr geehrte mini.maus,

ich vermute, Sie steigen gerade in die Programmierung mit Java ein.
Java ist eine objektorientierte Sprache und daher sollten Sie sich unbedingt die Grundlagen der objektorientierten Programmierung aneignen. Andernfalls werden sie erhebliche Schwierigkeiten bekommen mit Java zu programmieren.

Ihr Quellcode gibt mir deutliche Hinweise darauf, dass Ihnen das objektorientierte Konzept überhaupt nichts sagt. Habe ich recht?

Das ist keine Schande! Ganz im Gegenteil. Jeder fängt immer von ganz vorne an. Aber ohne diese Grundlagen bringt Ihnen das "code basteln" und "rum experimentieren" nichts. Ich empfehle Ihnen unter anderem die "JavaInsel 6" zum Einstieg. Einfach mal mit "JavaInsel 6" googlen und dort das Kapitel 3 durcharbeiten.

Auch wenn Ihnen das zunächst wie Böhmische Dörfer vorkommen wird. Am Ende des Tunnels ist Licht!!
Hier mal Ihr Code so modifiziert, dass er funktioniert
Vielleicht hilft Ihnen das weiter. Sonst fragen.

Gruß
Der JavaProfi

Java:
import java.util.Scanner;


public class ChallengeTwo {
 
	    
	    
	    public static void main (String [] args) 
	    {
	    	double wholesale;
		    double markupPercentage;
		    
	    	
	    	
	        Scanner keyboard = new Scanner(System.in);
	                
	        System.out.print("Enter the wholesale cost of an item: ");
	        wholesale = keyboard.nextDouble();
	        
	        System.out.print("Enter the markup percentage: ");
	        markupPercentage = keyboard.nextDouble();
	    
	        
	        ChallengeTwo ct = new ChallengeTwo();
	        double result = ct.calculateRetail(wholesale, markupPercentage);
	        System.out.println("The retail price is " + result);
	    
	    }
	    
	  
	    public double calculateRetail (double wholesale, double markupPercentage)
	    {   
	    	double retailPrice;
	        retailPrice = wholesale * markupPercentage / 100 + wholesale;
	        
	        return retailPrice;
	    }
}
 

Zurück
Oben