# Visual J - Totaler Anfänger - IQ-Test



## Todo89 (6. Mai 2011)

Ein schönes Wochenende erstmal,

Ich arbeite mit dem Programm Visual J 2005 und versuche, einen IQ-Test zu erstellen.
Meine Gedanken dazu waren folgende:

Ich habe 10 Fragen in einem normalen Textfeld gestellt und daneben jeweils Eingabefelder zum Ausfüllen gemacht.
Nun wollte ich, wenn man auf einen Button ("Auswerten") klickt, dass der Rechner die Eingabe von dem ersten Eingabefeld mit der richtigen Lösung vergleicht (if-Schleife?). Hier weiß ich allerdings nicht, wo genau man diese if-Schleife hinmachen muss und inwiefern ich das mit dem Eingabefeld verknüpfe. An der Stelle kommt das zweite Problem. Ich würde eine Variable definieren, die einfach "Punkte" heißt. Sollte die Eingabe von oben richtig sein, sollte er diese Punktzahl um +1 erhöhen. 
Nach dem Motto: if richtige Lösung, dann Punkte+1 . 
Dieses Verfahren würde ich mit jeder Frage wiederholen.
Am Ende sollte der PC der erreichten Gesamtpunktzahl einen IQ-Wert zuordnen und ihn dann wieder ausgeben. An der Stelle die Frage: Muss ich den IQ-Wert in einem weiteren Ein-/Ausgabefeld ausgeben oder geht das auch anders.

Ist mein Konzept soweit logisch und mit dem Programm umsetzbar? Sollte es klappen, werde ich es in einem größeren Rahmen nochmal umsetzen. Ich bin leider nicht so vertraut mit Java, möchte es aber gerne lernen.

Gruß
Thorsten


----------



## XHelp (6. Mai 2011)

Todo89 hat gesagt.:


> (if-Schleife?)


if-schleife.de


> Muss ich den IQ-Wert in einem weiteren Ein-/Ausgabefeld ausgeben oder geht das auch anders.


Naja, du kannst es ausdrucken, du kannst es mit einer Brieftaube verschicken, du kannst es per Internet mit einem Auftrag an einen Tätowierer schicken, was auch immer du machen willst...


> Ist mein Konzept soweit logisch und mit dem Programm umsetzbar?


Naja, schwer zu sagen. Im Grunde steht da: "Fragen irgendwie eingeben, dann irgendwie auswerten und dann ist das Ergebnis eben da". Es kommt viel mehr darauf, wie du das ganze Aufbaust.
Probier es einfach mal aus, ohne Vorkentnisse wirst du ohnehin irgendwann mal in eine Sackgasse laufen. Aber das ist normal und so lernst du es.
Aber im Grund ja, irgendwo wirst du eine Schleife brauchen.


----------



## Todo89 (6. Mai 2011)

Bin grad am Ausprobieren, nur leider finde ich die Stelle nicht, wo ich neue Variablen definieren kann. Bei BlueJ war das alles etwas einfacher.
Den Programmiertext muss ich dann unter dem Button unten eingeben, da das ganze Event ja über den Button läuft.

Werde weiter probieren und ggf. nochmal hier nachfragen.


----------



## andiv (6. Mai 2011)

Hinweis: Mit Visual Studio 2005 verwendest du höchstwahrscheinlich die Programmiersprache J# und nicht die Programmiersprache Java. Wenn du Java lernen willst, dann verwende auch dazu passende Werkzeuge wie Eclipse, Netbeans oder IntelliJ Idea.


----------



## Todo89 (6. Mai 2011)

Der Grund, wieso wir das machen (Lehrgang), ist wahrscheinlich, weil man so einfacher ins Thema Programmieren einsteigen kann. Aber das wusste ich tatsächlich nicht.:noe:

Ist das eine funktionierende If-Abfrage?


```
private void button1_Click(Object sender, System.EventArgs e)
	{
		if (Double.parseDouble(textBox3.get_Text()) = "rennen"
		{ Punkte + 1 }
        }
```

Wir hatten die immer nur, wenn wir zwei Eingabefelder addiert haben usw., wie macht man das denn mit Variablen?


----------



## nrg (6. Mai 2011)

nein. der Operator = ist erstmal eine Zuweißung. Um einen referenziellen Vergleich zu machen nimmt man ==. Ausserdem vergleichst du hier Äpfel mit Birnen. Du parst deine Textbox in einen Double und willst diesen dann mit einem String vergleichen? Im Body fehlt noch dazu die Zuweißung und die Methode get_Text() gibts nicht. Die Klammersetzung ist auch noch falsch.
Mit dem Unterschied von einer referenziellen und inhaltlichen Gleichheit will ich jetzt erstmal noch garnicht anfangen .


----------



## maki (6. Mai 2011)

Wie bereits erwähnt, wenn du Visual J Fragen hast, bist du hier falsch und sonst auch, du brauchst schon eine Zeitmaschine um mal ein paar Jahre in die Vergangenheit zu reisen, denn Visual J ist schon lange tot.
Mit Visual J kann dir (hier) keiner wirklich helfen, in diesem Forum geht es um Java.

*verschoben*


----------



## nrg (6. Mai 2011)

Mein Tipp: Wenn du Java lernen willst, schnapp dir ein Anfänger-Tutorial und verzichte komplett auf so Sachen wie JBlue. Damit wirst du dir nämlich kein Sprachverständnis erarbeiten. Beginne mit kleinen shellbasierten Programmen, die du am besten noch von Hand kompilierst und ausführst. Danach freunde dich mit einer IDE wie Eclipse oder Netbeans an.
Java Tutorial interaktiv - Programmieren lernen mit Java


----------



## Todo89 (6. Mai 2011)

ouch.:autsch: Ok, also das mit den "==" habe ich nur falsch aufgeschrieben, wir haben das tatsächlich mit den zwei Gleichheitszeichen gelernt. Den get_Text()) haben wir allerdings bisher immer mitgeschrieben, also anscheinend scheint es den doch zu geben ? (unsere lehrerin hat das gemacht)
Wie kann ich denn sonst die Textbox mit einem Wert vergleichen, der im Eingabefeld stehen soll?

Was du mit Zuweisung meinst, verstehe ich nicht ganz und die referenzielle und inhaltliche Gleichheit kenne ich leider nicht.

@ Moderator: Es tut mir wirklich Leid, den Unterschied wusste ich nicht. Unsere Lehrerin redet stets von Java und deshalb dachte ich, gerade auch, als ich die anderen Beiträge hier gelesen habe, dass mir hier geholfen werden kann. Wo liegen denn die Unterschiede zwischen Java und J#?

Und bitte keinen Streit in diesem Thread über IQ. Das ist nicht das Thema.

Gruß
ein verwirrter Thorsten


----------



## maki (6. Mai 2011)

> @ Moderator: Es tut mir wirklich Leid, den Unterschied wusste ich nicht. Unsere Lehrerin redet stets von Java und deshalb dachte ich, gerade auch, als ich die anderen Beiträge hier gelesen habe, dass mir hier geholfen werden kann. Wo liegen denn die Unterschiede zwischen Java und J#?


J# war eine schlechte Kopie von Java, die per Gericht verboten wurde.

zB. gibt es in Java kein [c]System.EventArgs[/c], wenn du fragen zur API hast, kann man dir nicht helfen, könntest genausogut in ein C# Forum gehen und dort deine fragen stellen, dort wärst du auch falsch 

Ist nciht böse gemeint, aber wenn du in Visual J proggen musst (bewzeifle ich), sieh dich leiber nochamls um, ansonsten nimm einfach Java und gut ist.


----------



## Todo89 (6. Mai 2011)

maki hat gesagt.:


> J# war eine schlechte Kopie von Java, die per Gericht verboten wurde.
> 
> zB. gibt es in Java kein [c]System.EventArgs[/c], wenn du fragen zur API hast, kann man dir nicht helfen, könntest genausogut in ein C# Forum gehen und dort deine fragen stellen, dort wärst du auch falsch
> 
> Ist nciht böse gemeint, aber wenn du in Visual J proggen musst (bewzeifle ich), sieh dich leiber nochamls um, ansonsten nimm einfach Java und gut ist.



Also sieht die If-Abfrage z.B. bei Java anders aus als bei J#? Na, das ist aber schön. Die Lehrerin wird noch was zu Hören bekommen mit ihren "modernen" Lehrmethoden. Und für sowas gibt man Geld aus.

Trotzdem Danke.


----------



## XHelp (6. Mai 2011)

Nein, die grundlegende Syntax müsste soweit gleich sein


----------



## Todo89 (6. Mai 2011)

XHelp hat gesagt.:


> Nein, die grundlegende Syntax müsste soweit gleich sein



Ich würde halt nur gerne wissen, wie sich die Idee, die richtige Antwort mit der eingegebenen Antwort vom Benutzer zu vergleichen, in Visual J umsetzen lässt. Dann sollte der PC in richtigem Falle die Punktzahl, die man vorher definiert hat, um 1 erhöhen und zu guter Letzt der Punktzahl einen IQ-Wert zuordnen.

Sollte das keiner wissen, ist das in Ordnung, aber das sind ja die ersten Basics gewesen und ich könnte mir gut vorstellen, dass die in Java und J# gleich sind.


----------



## Tomate_Salat (6. Mai 2011)

```
private void button1_Click(Object sender, System.EventArgs e)
{
  if (textBox3.get_Text()== "schwimmen")
 { 
       Punkte += 1;
 }
}
```

so könnte ich mir vorstellen, dass es funktioniert. Wenn der Javaklon aber richtig kopiert hat, sollte es so heisen:


```
private void button1_Click(Object sender, System.EventArgs e)
{
  if (textBox3.get_Text().equals("schwimmen"))
 { 
       Punkte += 1;
 }
}
```

ist allerdings ungetestet. Kannst ja mal schauen, ob das funktioniert....ja und ansonsten, vllt einfach mal anmerken, dass ihr eine tote Sprache. (Wobei ich befürchte, sie wird mit Latein versuchen das rechtzufertigen ).


----------



## Todo89 (6. Mai 2011)

Vielen Dank, Tomate 

Ich werde gleich morgen schauen, ob es funktioniert. Wo genau muss ich eigentlich die Variablen definieren? Nicht im Bereich des Buttons, oder?

Und ja, ich bin Lateiner, da wirds schwierig mit dem Argumentieren 

Schönen Abend noch,
Thorsten


----------



## Tomate_Salat (6. Mai 2011)

Ich würde sagen als Klassenattribut. Aber alles rein spekulativ, da ich nie mit J# gearbeitet habe.


----------



## Todo89 (6. Mai 2011)

Soweit habe ich jetzt alles getan, ich habe nur noch Probleme damit, der Punktzahl einen IQ-Wert zuzuordnen.


```
if (Punkte=9)
{
   MessageBox.Show("IQ:170");
}
```

Allerdings meckert er bei Punkte rum und meint, dass ein boolean-Wert dastehen müsste -> die Variable Punkte habe ich ja als double eingesetzt. Hat jemand irgendwelche Vorschläge?


----------



## XHelp (6. Mai 2011)

Es wird mit 
	
	
	
	





```
==
```
 vergliechen. Was soll eigentlich MessageBox.Show sein?


----------



## Todo89 (6. Mai 2011)

Auf meinem Arbeitsblatt wird das als Text herausgeben benutzt. Als zweite Möglichkeit wird


```
if ....
{ label5.set_Text("wasauchimmer"); }
```

angegeben, wobei label5 eben ein Textfeld ist.

Das einzige, was er mir jetzt noch als falsch anzeigt, ist eben diese if-Abfrage mit der Begründung:

if condition must be boolean and not 'double'


----------



## XHelp (6. Mai 2011)

Aso, mist, habe vergessen, dass es um J# geht. Da könnte alles möglich sein 
Hast du denn mit 
	
	
	
	





```
==
```
 probiert?


----------



## Todo89 (6. Mai 2011)

Ja, habe ich ^^ klappt leider nicht


----------



## nrg (6. Mai 2011)

hab ich doch schon oben geschrieben. Vergleiche mit ==. = ist eine Zuweisung

edit: schreib vom iPhone. zweite Seite net gesehn


----------



## nrg (7. Mai 2011)

Todo89 hat gesagt.:


> ```
> if (Punkte=9) {
> ```



als was 
	
	
	
	





```
Punkte
```
 deklariert ist, weiß nur der TO und wie JAVA eine Ganzzahl im Code interpretiert, brauch ich dir Superjavapro ja nicht erklären, hm?

edit: wobei nachdem der TO 
	
	
	
	





```
Punkte
```
 auch mal erfolgreich mit 
	
	
	
	





```
Punkte += 1
```
 inkrementiert hat, sollte der Datentyp auch klar sein...

edit2: bezog sich auf den anoymen Post von iqqq, welche jetzt gelöscht sind. besser ist es :bae:


----------



## Todo89 (7. Mai 2011)

Ich habe die Variable 
	
	
	
	





```
Punkte
```
 als 
	
	
	
	





```
private double Punkte
```
definiert.

Bei 

```
if (Punkte == 9)
{
MessageBox.Show("IQ:170");
}
```
zeigt er mir halt die Fehlermeldung an. Ansonsten scheint jedenfalls nichts falsch zu sein.


----------



## Tomate_Salat (7. Mai 2011)

Wurde zum Zeitpunkt des vergleichs double initalisiert? schreibe vllt mal:

```
private double Punkte=0;
```


----------



## Todo89 (7. Mai 2011)

Ohhhhhhh mein GOTT, es funktioniert :applaus::applaus::toll::toll:

Vielen Dank, Tomate, du bist der Beste :lol:

Wie kann man sowas nur vergessen 
Werde das Ganze jetzt etwas größer umsetzen, sollte noch was sein, melde ich mich hier.

Gruß
ein glücklicher Thorsten


----------



## nrg (7. Mai 2011)

wobei ein int besser wäre. zumindest in java kann nicht jedes ergebnis einer gleitzahlrechnung dezimal 100% dargestellt werden. d.h. es könnte mal sowas wie 9.000000001 oder 8.999999999 rauskommen. dann würde 
	
	
	
	





```
Punkte == 9
```
 nicht funktionieren.
Lange Rede kurzer Sinn: wenn du etwas hochzählen möchtest nimm einen int


----------



## Todo89 (7. Mai 2011)

Ok, das werde ich so umsetzen. Hat jemand eine Idee, wie man die falschen Lösungen dann in der MessageBox anzeigen könnte?


----------

