View Full Version : [Runde 2] - wie ist es mit Testen.java file ???
:confused: Verstehe ganz nicht wie soll ich den testen.java erzeugen .... also nach dem Spezifikation muss ich Methode main im gewaehlten Programm in die Klassenmethode perform umwandeln (na ja gibt's dort auch notwendige Modifikationen zu machen...aber damit denselbe Programm gut nach der urspruenglichen Spezifikation funktioniert (also Korrekturen von Fehler im Programm) oder damit die Testen und perform Klasse gut funktionieren????
.... und dann via Main.java testen .... und was soll das aber eigentlich machen ??? soll das automatisch IO Paare generieren oder was ??? (oder ich muss IO Paare selbst zB. im Notepad machen ???).... wenn ich aber die Korrektur von Fehler im Programm mache.... bekomme ich die IO Paare von gutem Programm .... soll ich nicht die IO Paare vom Programm (urspruenglichen) bekommen den ich in der Spezifikation habe ???
Das wurde zwar schon zig mal diskutiert aber egal....
Verstehe ganz nicht wie soll ich den testen.java erzeugen .... also nach dem Spezifikation muss ich Methode main im gewaehlten Programm in die Klassenmethode perform umwandeln Du beantwortest deine Frage selbst...
main wird perform ABER du musst das Programm so abändern, dass es korrekt läuft.
.... und dann via Main.java testen .... und was soll das aber eigentlich machen ??? Main.java macht nichts aneres als die Methode perform der Klasse Testen aufzurufen. Was dann passieren soll, steht im Codeoder ich muss IO Paare selbst zB. im Notepad machen ??? das Input-File mit Notepad, das Output-File generieren lassen
soll ich nicht die IO Paare vom Programm (urspruenglichen) bekommen den ich in der Spezifikation habe ??? nein, vom geänderten korrekt arbeitenden Programm
guck dich bisschen in forum rum, dann findest du paar hilfreiche sachen zu deinen fragen!
NonSense
06-01-2005, 00:50
Ich verstehe auch nicht wie ich es machen soll, wo ist es im Forum besser geschrieben?
also was man in runde 2 machen muß hab ich schon ein paarmal beschrieben und da meine kollegen auch nicht grad untätig warn sollte es inzwischen mindestens 20 erklärungen geben. beispielsweise hier:
http://www.informatik-forum.at/showpost.php?p=130022&postcount=5
suchfunktion is your friend ;)
NonSense
06-01-2005, 15:21
Hab weiteres Problem, ich hab das Programm korrigiert und moechte die IO Paare erzeugen aber obwohl ich alles schritt fuer schritt gemacht habe:
zuerst das Programm im Testen.java umkopiert, korrigiert, dann das mit dem
public static String perform() und jetzt soll ich alle print(/ln) mit return ersetzen aber in dem Teil des Programms public void printWert(String[] gruppe, int gruppeAnzahl) sind returns benutzt und wenn ich die prints mit returns ersetze laesst sich das Programm nicht kompilieren. Hab versucht diese prints nicht zu aendern aber ausserdem tritt folgendes Fehler bei Kompliation:
C:\Programme\Java\jdk1.5.0\bin>javac Testen.java
Testen.java:157: missing return statement
}
^
1 error
Das Programm steht hier koennte mit jemans helfen?
import eprog.*;
public class Testen extends EprogIO
{
String[] name=new String[10];
int[] wert = new int[10];
/**
* mit Method printWert werden der Name und Wert von Variable jeder Gruppe festgestellt
* dann wird der Wert der aufgeforderten Variable ausgedruckt
* @param gruppe
* @param gruppeAnzahl
*/
public void printWert(String[] gruppe, int gruppeAnzahl)
{
for(int i=0; i<gruppeAnzahl;i++)
{
if (gruppe[i].indexOf("=")>0)
{
String einName = gruppe[i].substring(0, gruppe[i].indexOf("=")); //der Variablenname einer Gruppe wird festgestellt
String einWert = gruppe[i].substring(gruppe[i].indexOf("=")+1); //der Wert von Variable wird fesgestellt, aber er erhählt hier immer noch den Typ String
if (testName(einName))
{
name[i] = einName;
if (getEinWert(einWert)>=0 && getEinWert(einWert)<32768)
{
wert[i] = getEinWert(einWert);
} else
{
print("FALSCHE EINGABE!");
return;
}
} else
{
print("FALSCHE EINGABE!");
return;
}
}
else if (gruppe[i].indexOf("?")==0) //ob Eingabe in Form z.B ?3 eingelesen wurde
{
String ausgabeName = gruppe[i].substring(gruppe[i].indexOf("?")+1);
if (getEinWert(ausgabeName)>=0)
{
println(getEinWert(ausgabeName));
}
else {
print("FALSCHE EINGABE!");
return;
}
}
else {
print("FALSCHE EINGABE!");
return;
}
}
}
/**
* Hier wird überprüft, ob der Variable_Name komplett aus Buchstaben besteht
* und die Bedingung der Aufgabenstellung (NAME besteht max. aus 10 Buchstaben)
* erfüllt.
*/
private boolean testName(String name)
{
if (name.length()>10) return false;
for(int i=0;i<name.length();i++)
{
if (name.toLowerCase().charAt(i)<'a' || name.toLowerCase().charAt(i)>'z') return false;
}
return true;
}
/**
* der Wert von Variable wird überprüft, ob ein Vorzeichen vor ihm steht.
* der Typ von einWert wird in int Typ konvertiert.
*
* @param einWert
* @return
*/
private int getEinWert(String einWert)
{
try
{
if (einWert.indexOf("+")==0) return -1; //der Wert von Variable wird überprüft, ob ein Vorzeichen vor ihm steht.
return Integer.parseInt(einWert); //der Typ von einWert wird in int Typ konvertiert.
}
catch (Exception e)
{
int index = -1;
for(int i=0;i<10;i++)
{
if (name[i] != null && name[i].compareTo(einWert)==0) // ob einWeirt gleich der Name einer vorher eingelesenen Varialble ist
{
index = i; // der Wert von einWert(in diesem Fall in Form z.B einWert=a) wird durch Index von Variablennam festgestellt
}
}
if (index != -1) return wert[index];
return -1;
}
}
public static String perform()
{
String[] gruppe = new String[11]; //gruppe wird durch z.B A=3 definiert
int index = 0;
String eingabe = new String(readWord()); //eingabe wird hier eingelesen
boolean endOfData = false;
while(!endOfData && index<11)
{
//System.out.println(ausgabe);
if (eingabe.indexOf("?")==0) // wird überprüft, ob nur ?WERT oder ?NAME der Fall ist
{
gruppe[index] = eingabe;
index++;
endOfData = true;
}
else
{
gruppe[index]=eingabe;
index++; // die Anzahl der Gruppe wird gezaehlt
eingabe = new String(readWord());
}
}
if (index >= 11)
{
print("FALSCHE EINGABE!");
}
else
{
Testen v = new Testen();
v.printWert(gruppe, index);
}
println(""); // ein Zeilenvorschub
}
}
Paulchen
06-01-2005, 15:27
deine methode perform ist wie folgt definiert:
public static String perform()
diese muss einen String zurückliefern, und zwar mit hilfe von "return irgendwas";
public static void main(String[] args)
liefert nichts zurück, also musst du auch nichts dergleichen in einem return-statement angeben
die methode printWert würde ich vom typ her von void in String ändern, dann kannst du jedes print durch return ersetzen; in perform musst du dann noch
v.printWert(gruppe, index);
in
return v.printWert(gruppe, index);
umändern
übrigens: es gibt so was wie CODE-tags, welche die lesbarkeit von gepostetem programmcode enorm verbessern...
print("FALSCHE EINGABE!");
return;kommt sehr oft vor! print bzw. println soll aber durch return ersetzt werden, da Testen.java keine Ausgabe liefert, sondern nur Werte an Main.java zurückgeben soll!
übrigens: es gibt so was wie CODE-tags, welche die lesbarkeit von gepostetem programmcode enorm verbessern...ja bitte...
NonSense
06-01-2005, 17:24
Na ja aber wenn ich im
print("FALSCHE EINGABE!");
return;
print durch return ersetze, dann hab ich 2 mal return und tritt wieder Fehlermeldung...
hab versucht auch das Loesung von Paulchen, nichts hat mir geholfen
Paulchen
06-01-2005, 17:29
dann das zweite return streichen
NonSense
06-01-2005, 18:38
Na ja habs gemacht aber nur ein Fehler noch und zwar im PrintWert
C:\Programme\Java\jdk1.5.0\bin>javac Testen.java
Testen.java:59: incompatible types
found : int
required: java.lang.String
return (getEinWert(ausgabeName));
^
1 error
hab ich auch den Code uploaded fuer bessere Anschauung
NonSense
06-01-2005, 18:41
hier ist es
hier ist es
Steht doch eh schon alles in der Compiler-Meldung:
getEinWert liefert einen Integer-Wert zurück, in der betreffenden Funktion musst du aber einen String zurückliefern.
Wenn du also den Wert als String zurückgeben willst, machst du das am besten mit "return String.valueOf(getEinWert(ausgabeName));".
NonSense
06-01-2005, 20:12
na ja hab ein anderes Bsp gewaehlt und korrigiert, dann hab ich es umkopiert zu Testen.java und die aenderungen gemacht, es laest sich kompilieren aber bei den IO paaren trirr eine Fehlermeldung auf.
Bitte um Hilfe.
C:\Programme\Java\jdk1.5.0\bin>java -classpath . Testen<Testen.i1> Testen.o1
Exception in thread "main" java.lang.NoSuchMethodError: main
NonSense
06-01-2005, 20:37
habs auch so versucht aber kein positives Ergenis erhalten
C:\Programme\Java\jdk1.5.0\bin>javac main.java
C:\Programme\Java\jdk1.5.0\bin>java main.java <Testen.i1> Testen.o1
Exception in thread "main" java.lang.NoClassDefFoundError: main/java
WASS SOLL ICH DAMIT TUN???
beim "java" befehl gehört nach dem dateinamen keine endung. also nur java main <Testen.i1> Testen.o1
soweit ich mich erinnern kann, wurde Main.java in der zweiten runde bereits groß geschrieben also befehl:C:\Programme\Java\jdk1.5.0\bin>javac Main.java
C:\Programme\Java\jdk1.5.0\bin>java Mainoder für die IO-PaareC:\Programme\Java\jdk1.5.0\bin>java Main <Testen.i1> Testen.o1
NonSense
07-01-2005, 14:06
Ja ja, bisschen spaeter bin ich drauf gekommen :)
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.