dieruebe Geschrieben 13. Januar 2009 Geschrieben 13. Januar 2009 Hallo, Ich brauche "etwas" Hilfe mit BlueJ. Und zwar möchte ich ein Programm erstellen, dass die Widerstandsfarben in den Wert umwandelt, so wie hier, bloß nich so komplieziert. Ich brauch keine Oberfläche. Es soll 4 Eingabefelder geben,in die man die Farben (eben als Wort zb. Rot, Grün...) einträgt. Das Programm soll nun den Wert des Widerstands anzeigen. Toleranz kann außer acht gelassen werden. Kann man so ein Programm überhaupt mit BlueJ machen? Wenn ja, wie ?? Ich bitte um Eure Hilfe MfG dieruebe Zitieren
flashpixx Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 Du kannst das mit BlueJ machen, aber wo ist genau Dein Problem? Phil Zitieren
speedi Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 (bearbeitet) Ich brauch keine Oberfläche. Es soll 4 Eingabefelder geben... WTF?? Ich habe noch nicht mit BlueJ gearbeitet aber lt. Wikipedia ist es eine einfache Entwicklungsumgebung für Anfänger. Generell wird ein Java-Programm eigentlich nicht durch die Entwicklungsumgebung beschränkt sondern durch die Fähigkeiten des Programmierers und die Fähigkeiten von JAVA selbst. Du kannst auch mit Notepad komplexe JAVA-Programme schreiben (ist allerdings nicht sehr komfortabel und wird zugegebener Maßen recht unübersichtlich). Zum Erstellen einer Oberfläche ist die Klasse JFrame Interessant Eingabefelder kannst du mit JTextField realisieren. Bearbeitet 14. Januar 2009 von speedi Zitieren
Haymaker84 Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 anscheinend möchtest du konsolenbasiert (Text) bleiben, anstatt eine Swing / AWT Oberfläche zu erstellen. Eigentlich geschieht das dann in drei Schritten: Mit einer for-Schleife liest du 4 mal hintereinander die Konsoleneingabe des Benutzers. (Man muss Streams verwenden - am besten Google danach durchforsten, gibt gute Beispiele) Dann prüft man mit IFs, welche Farbe eingegeben wurde und ordnet dann denn entspr. Widerstand zu. Dann muss man die Widerstandswerte ausgeben. Da brauch nich viel zu, das müsstest du mit den Standart-Libraries und einer abgespeckten Entwicklungsumgebung hinkriegen! Zitieren
elSusto Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 Bei BlueJ erscheinen aber auch schon "eingabefelder" wenn man man einfach folgendes schreiben würde.... public void berechneWiderstand(String Farbe1, String Farbe2, String Farbe3, String Farbe4) { //farben kontrollieren und berechnen..... } und jetzt könnte man ja mit BlueJ die methode manuell aufrufen wenn man dieses tut...erscheinen die eingabe felder in die du die Farben eintragen kannst. meinst du sowas?:confused: Zitieren
Haymaker84 Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 oh man, jetzt hab ich erst gecheckt was das ist... da hab ich ja viel zu kompliziert angesetzt. Hört sich aber gut an - so für anfänger... Werd ich mir mal ziehen. Zitieren
dieruebe Geschrieben 14. Januar 2009 Autor Geschrieben 14. Januar 2009 @ elSusto genau sowas mein ich, aber ich kapier nich wie ich das mit der ausgabe machen soll, denn die farben sind ja in einer bestimmten reihenfolge angeordnet und verändern ihren wert je nach Stelle. Zitieren
paulknulst Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 dann nehme doch 4 eingabe strings farbe1, farbe2, farbe3, farbe4 und fragen für jeden string einzeln ab per switch anweisung oder mit vielen ifs.. also jedesmal bekommt eine variable dann den zugewiesenen wert. Also theoretisch so: public void berechneWiderstand(String farbe1, String farbe2, String farbe3, String farbe4) { if(farbe1.equals("Rot")) ersteVariable = 1; if(farbe1.equals("Grün")) ersteVariable = 2; ..... if(farbe2.equals("Rot")) zweitevariable = 10; if(farbe2.equals("Grün")) zweitevariable = 20; ..... if(farbe3.equals("Rot")) zweitevariable = 100; if(farbe3.equals("Grün")) zweitevariable = 200; ..... if(farbe4.equals("Rot")) zweitevariable = 1000; if(farbe4.equals("Grün")) zweitevariable = 2000; } und nachher rechnest du dann mit ersteVariable, zweiteVariable, dritteVariable, vierteVariable den Widerstandswert aus und gibst ihn per return zurück. So kann man auch 3 mal rot eingeben und hat für jedes rot ein anderen wert. Ist eigentlich sehr einfach zu realsieren..Mfg Zitieren
elSusto Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 wie meinst du das mit der Ausgabe? also das mit den verschieden stellen und deren werten würde ich auch so machen wie p2k.... Zitieren
paulknulst Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 ausgabe ganz billig einfach per return wert. Bei BlueJ wird der dann einfach in einem Feld ausgegeben. Ich seh grad das die Methode falsch war ^^ public int berechneWiderstand(String farbe1, String farbe2, String farbe3, String farbe4) { ... } Falls man jetzt in BlueJ diese Methode aufruft, wird man zum eingeben der vier Strings gebeten. Hat man dies getan wird die Methode ausgeführt und ein popup mit dem rückgabewert blendet ein. achja, noch ne kleiner änderung zum code. Ich würde vorher noch jeden string in kleinbuchstaben umwandeln, damit du "falsche" eingaben abfangen kannst, wie z.B. rOt oder gRüN... Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 also das mit der groß - kleinschreibung könnte er ja auch einfach mit "equalsIgnoreCase" machen dann wäre das am einfachsten... also: if(farbe1.equalsIgnoreCase("rot") { // wertzuweisung.... } hab gedacht er will das mit System.out.println(); ausgeben deswegen hatte ich void genommen. Aber dabei sehe ich ja kein problem deswegen verstehe ich nicht wo das Problem bei der Ausgabe liegen soll?! oder hat sich das damit schon geklärt? public void berechneWiderstand(String farbe1, String farbe2, String farbe3, String farbe4) { if(farbe1.equalsIgnoreCase("rot") { // wertzuweisung.... } ... //berechnung System.out.println("Ergebnis der Berechnung"); } Zitieren
paulknulst Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 im grunde ist es ja egal wie man die ausgabe macht, sowohl deine als auch meine möglickeit kann gewählt werden. es ist nur wichtig wie das programm verwendet werden soll. wenn man später noch mit dem widerstandwert rechnen soll, würde ich meine bevorzugen, da man ihn per aufruf gleich in einer variablen speichern kann. Bei simpler Anzeige bevorzuge ich natürlich die mit system.out.println(....). Aber ist alles eher geschmacksache PS:das mit equalsIgnoreCase() ist übrigens auch ne sehr gute idee. besser als das erst alles in kleinbuchstaben umzuwandeln xD Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 ja also ich denke auch das im allgemeinen deins besser ist für die ausgabe da man den wert wirklich besser weiter verwenden kann...macht auch mehr sinn wie ich finde da man es später auch besser in einem größerem oder anderem projekt verwenden kann. villt wird uns der Threadstarter ja mal zeigen wie er es implementiert hat... Zitieren
dieruebe Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 Also die Idee von p2k gefällt mir ganz gut. Aber es sind ja ziemlich viele Farben das dauert dann ja ziemlich lange oder geht es au einfacher? Also mit weniger ifs? Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 wie viele Farben hast du denn?? ...ich dachte vier?! Zitieren
dieruebe Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 Ich hab vier eingangsfelder, in die ich die Farben eingeben kann. Es sind soweit ich weiß 12 unterschiedliche Farben. Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 Du hast insgesamt 12 verschiedene Farben kannst aber nur vier eingeben?? musst du denn nicht alle 12 farben eingeben können ??? Zitieren
paulknulst Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 nein es gibt 12 verschiedene farben, die an 4 verschiedenen stellen stehen können. also insgesamt 48 werte die es geben kann. ich würde sagen du musst 48 ifs machen. wenn du mit combifelder und textfeldern arbeiten würdest geht das einfacher aber so mit bluej ohne jframe, applet musst du das so umständlich machen. oder mir fällt immo nix ein ^^. naja viel erfolg..ist halt viel zu schreiben..aber wofür gibt es strg + c und strg + v ^^ Zitieren
flashpixx Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 ich würde sagen du musst 48 ifs machen. Ohhh Gott, dafür gehört man standrechtlich erschossen ! :old Codiere die visuellen Werte entsprechend und hinterlege z.B. die Werte in RadioButtons. In jedem Wert ist Farbe und Position codiert, dann muss man nur über die Eingabe einmal iterieren und kann aus den selektierten Daten Position und Farbe bestimmen. Wenn Du die "Farbe" auch direkt passend codierst, dann kannst Du direkt mit der Position und dem Farbenwert numerisch den Widerstand bestimmen Phil Zitieren
paulknulst Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 ...wenn du mit combifelder und textfeldern arbeiten würdest, geht das einfacher aber so mit bluej ohne jframe, applet musst .... ich sagte doch es geht einfacher, nur so mit bluej halt nicht. Zitieren
dieruebe Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 ok also das heißt ich muss 48 if anweisungen machen? Zitieren
paulknulst Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 (bearbeitet) wie gesagt, nur wenn du nicht mit frame oder applet arbeiten willst. und ich glaube das du gerade damit angefangen bist und dich noch nicht so damit auskennst. wenn du da schon ahnung von hast kannst du es natürlich auch mit einen jframe und kombifeldern machen. es führt aber kein weg daran vorbei für jede bedingung, also stelle wo die farbe stehen kann eine anweisung zu machen. das wären für 12 farben a 4 stellen = 48 anweisungen. weil ich meine die werte für rot, grün, braun etc sind nicht berechenbar sondern fest -> also können nicht mit irgendeinem multiplikator berechnet werden. wie du das nachher verpackts ist natürlich dir überlassen. Bearbeitet 15. Januar 2009 von p2k Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 (bearbeitet) wie wäre es mit ner HashMap?! import java.util.ArrayList; import java.util.HashMap; public class main { private int m_IntValOne; private int m_IntValTwo; private int m_IntValThree; private int m_IntValFour; private int m_IntResult; private ArrayList<String> colors = new ArrayList<String>(); private HashMap<String, String> col1 = new HashMap<String, String>(); private HashMap<String, String> col2 = new HashMap<String, String>(); private HashMap<String, String> col3 = new HashMap<String, String>(); private HashMap<String, String> col4 = new HashMap<String, String>(); public void makeMap() { col1.put("farbe1", "10"); col1.put("farbe2", "20"); col1.put("farbe3", "30"); col1.put("farbe4", "40"); col1.put("farbe5", "50"); col1.put("farbe6", "60"); col1.put("farbe7", "70"); col1.put("farbe8", "80"); col1.put("farbe9", "90"); col1.put("farbe10", "100"); col1.put("farbe11", "110"); col1.put("farbe12", "120"); col2.put("farbe1", "10"); col2.put("farbe2", "20"); col2.put("farbe3", "30"); col2.put("farbe4", "40"); col2.put("farbe5", "50"); col2.put("farbe6", "60"); col2.put("farbe7", "70"); col2.put("farbe8", "80"); col2.put("farbe9", "90"); col2.put("farbe10", "100"); col2.put("farbe11", "110"); col2.put("farbe12", "120"); col3.put("farbe1", "10"); col3.put("farbe2", "20"); col3.put("farbe3", "30"); col3.put("farbe4", "40"); col3.put("farbe5", "50"); col3.put("farbe6", "60"); col3.put("farbe7", "70"); col3.put("farbe8", "80"); col3.put("farbe9", "90"); col3.put("farbe10", "100"); col3.put("farbe11", "110"); col3.put("farbe12", "120"); col4.put("farbe1", "10"); col4.put("farbe2", "20"); col4.put("farbe3", "30"); col4.put("farbe4", "40"); col4.put("farbe5", "50"); col4.put("farbe6", "60"); col4.put("farbe7", "70"); col4.put("farbe8", "80"); col4.put("farbe9", "90"); col4.put("farbe10", "100"); col4.put("farbe11", "110"); col4.put("farbe12", "120"); } public int berechneWiderstand(String pStrCol1, String pStrCol2, String pStrCol3, String pStrCol4) { m_IntValOne = Integer.parseInt(col1.get(pStrCol1)); m_IntValTwo = Integer.parseInt(col2.get(pStrCol2)); m_IntValThree = Integer.parseInt(col3.get(pStrCol3)); m_IntValFour = Integer.parseInt(col4.get(pStrCol4)); //berechne widerstand m_IntResult = m_IntValOne + m_IntValTwo + m_IntValThree + m_IntValFour; /////////////////// return m_IntResult; } } so sollte das auch funktionieren...oder? PS.: so hast du nicht mal ein IF =) Bearbeitet 15. Januar 2009 von elSusto Zitieren
dieruebe Geschrieben 15. Januar 2009 Autor Geschrieben 15. Januar 2009 Okay jetzt kommt der Fehler "class, interface or enum expected" was wahrscheinlich heißt das ich mir irgenein update laden muss oder? Zitieren
elSusto Geschrieben 15. Januar 2009 Geschrieben 15. Januar 2009 nein aber du kannst ja mal die gesamte fehlermeldung posten... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.