Hallo Forum!
Ich beschäftige mich im Studium seit ca. 2 Monaten mit Java-Programmierung. Jetzt bin ich zum ersten Mal in ein Problem gelaufen, dass ich nicht selbst per Google und JavaDoc-Recherche lösen konnte.
Aufgabe ist, eine Klasse zu schreiben ähnlich der Color-Klasse, die in java.awt.* bereits vorhanden ist. Ergo ein paar Konstruktoren die mit entsprechender Wertübergabe eine neue Farbe erstellen und Methoden zum auslesen derselben zur Verfügung stellen.
Das Thema ist mir bisher erst grundlegend vertraut, wenn hier zu viel im argen liegt werde ich gerne nochmal etwas lesen, aber wenn es doch nur ein kleiner Fehler ist hätte ich gern ein bisschen Anregung wo es denn genau hapert. Habe per Debug schon versucht den Fehler einzugrenzen, allerdings komm ich da nicht weiter weil jeder 2te Schritt zu "Source not found." führt. Warum weiß ich nicht... Hatte das aber schonmal mit einem anderen Programm bei dem eigentlich alles in Ordnung war.
Fehlermeldung in der Konsole ist wie folgt:
Danke schonmal für etwaige Vorschläge! Wenn ihr noch Infos braucht, einfach nachfragen, arbeite auf Windows 7 mit Eclipse, das folgende UML-Klassendiagramm war uns gegeben:
Mit freundlichen Grüßen
Cashney
Ich beschäftige mich im Studium seit ca. 2 Monaten mit Java-Programmierung. Jetzt bin ich zum ersten Mal in ein Problem gelaufen, dass ich nicht selbst per Google und JavaDoc-Recherche lösen konnte.
Aufgabe ist, eine Klasse zu schreiben ähnlich der Color-Klasse, die in java.awt.* bereits vorhanden ist. Ergo ein paar Konstruktoren die mit entsprechender Wertübergabe eine neue Farbe erstellen und Methoden zum auslesen derselben zur Verfügung stellen.
Das Thema ist mir bisher erst grundlegend vertraut, wenn hier zu viel im argen liegt werde ich gerne nochmal etwas lesen, aber wenn es doch nur ein kleiner Fehler ist hätte ich gern ein bisschen Anregung wo es denn genau hapert. Habe per Debug schon versucht den Fehler einzugrenzen, allerdings komm ich da nicht weiter weil jeder 2te Schritt zu "Source not found." führt. Warum weiß ich nicht... Hatte das aber schonmal mit einem anderen Programm bei dem eigentlich alles in Ordnung war.
Java:
public final class Color {
// Klassenattribute
private float alpha;
private float red;
private float green;
private float blue;
// Konstantendeklaration
final Color BLACK = new Color(0,0,0);
final Color WHITE = new Color(255,255,255);
final Color ORANGE = new Color(255, 165, 0);
final Color RED = new Color(255,0,0);
final Color BLUE = new Color(0,0,255);
final Color GREEN = new Color(0,255,0);
// Konstruktoren
public Color(float r, float g, float b, float a){
alpha = a;
red = r;
green = g;
blue = b;
}
public Color(float r, float g, float b){
alpha = 1;
red = r;
green = g;
blue = b;
}
public Color(int r, int g, int b, int a){
alpha = (float)a / 255;
red = (float)r / 255;
green = (float)g / 255;
blue = (float)b / 255;
}
public Color(int r, int g, int b){
alpha = 1;
red = (float)r / 255;
green = (float)g / 255;
blue = (float)b / 255;
}
public Color(int argb){
int b = argb & 255;
argb = argb >>> 8;
int g = argb & 255;
argb = argb >>> 8;
int r = argb & 255;
argb = argb >>> 8;
int a = argb & 255;
setColor(r,g,b,a);
}
public Color(Color color){
float a = color.getAlpha();
float r = color.getRed();
float g = color.getGreen();
float b = color.getBlue();
setColor(r,g,b,a);
}
// Getter-Methoden
public float getAlpha(){
return alpha;
}
public float getRed(){
return red;
}
public float getGreen(){
return green;
}
public float getBlue(){
return blue;
}
public int getARGBColor(){
int result = 0;
result = (int)(alpha * 255);
result = result << 8;
result += (int)(red * 255);
result = result << 8;
result += (int)(green * 255);
result = result << 8;
result += (int)(blue * 255);
return result;
}
public String getColor(String color){
if(color.equalsIgnoreCase("BLACK")){
return "BLACK";
}else if(color.equalsIgnoreCase("WHITE")){
return "WHITE";
}else if(color.equalsIgnoreCase("ORANGE")){
return "ORANGE";
}else if(color.equalsIgnoreCase("RED")){
return "RED";
}else if(color.equalsIgnoreCase("GREEN")){
return "GREEN";
}else if(color.equalsIgnoreCase("BLUE")){
return "BLUE";
}else{
return "null";
}
}
// Setter-Methoden
private void setColor(float r, float g, float b, float a){
if((a>=0&&a<=1)&&(r>=0&&r<=1)&&(g>=0&&g<=1)&&(b>=0&&b<=1)){
alpha = a;
red = r;
green = g;
blue = b;
}else{
System.out.println("Parameter richtig eingeben...");
}
}
private void setColor(int r, int g, int b, int a){
float alpha = ((float)a)/255;
float red = ((float)r)/255;
float green = ((float)g)/255;
float blue = ((float)b)/255;
setColor(alpha, red, green, blue);
}
// To String Methode
public String toString(){
// Werte von 0,1 auf 0,255 umrechnen fehlt noch
String output = ("Color(red = " + red + ", green = " + green + ", blue = " + blue + ", alpha = "+ alpha + ")");
return output;
}
public static void main(String[] args){
Color neueFarbe = new Color(0,206,209);
System.out.println(neueFarbe.getBlue());
}
}
Fehlermeldung in der Konsole ist wie folgt:
Exception in thread "main" java.lang.StackOverflowError
at Color.<init>(Color.java:36)
at Color.<init>(Color.java:10)
at Color.<init>(Color.java:10)
at Color.<init>(Color.java:10)
at Color.<init>(Color.java:10)
at Color.<init>(Color.java:10)
[...]
Danke schonmal für etwaige Vorschläge! Wenn ihr noch Infos braucht, einfach nachfragen, arbeite auf Windows 7 mit Eclipse, das folgende UML-Klassendiagramm war uns gegeben:
Mit freundlichen Grüßen
Cashney
Zuletzt bearbeitet: