www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Schul-Informatik Algorithmen" - Texteingabe
Texteingabe < Algorithmen < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Schul-Informatik Algorithmen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:24 Di 29.07.2008
Autor: lisa11

Aufgabe
es wird eine Textdatei eingelesen mit In.open("tmp.txt")
eingebunden in ein Programm

Ich habe eine Textdatei tmp.txt geschrieben wo speichere ich dies ab damit das Programm  In.open ("tmp.txt") lesen kann
wo lege ich dies im eclipseordner ab?


        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:21 Di 29.07.2008
Autor: lisa11

bekomme ich auch eine Antwort?

Bezug
        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 18:10 Di 29.07.2008
Autor: Somebody


> es wird eine Textdatei eingelesen mit In.open("tmp.txt")
>  eingebunden in ein Programm
>  Ich habe eine Textdatei tmp.txt geschrieben wo speichere
> ich dies ab damit das Programm  In.open ("tmp.txt") lesen
> kann
>  wo lege ich dies im eclipseordner ab?

Im Wurzelverzeichnis des betreffenden Projektes - ausser Du hättest für dieses Projekt spezielle Run/Debug-Settings definiert: dort kannst Du nämlich ein beliebiges Verzeichnis als "working directory" festlegen. (In der Verzweiflung könntest Du auch eine Textdatei schreiben und dann suchen, in welches Verzeichnis sie geschrieben wurde...)
Dieses Verzeichnis gilt allerdings nur als "working directory", solange die Anwendung nicht ausdrücklich das "current directory" wechselt.


Bezug
                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:28 Di 29.07.2008
Autor: lisa11

gut ich mache new projet und gebe den namen des ortners ein dann erstellt er mir den ortner und dann habe ich darin noch die in und out datei kopiert kann ich in diesen ortner die f.txt datei speichern...

noch was ich habe folgendes programm wenn ich run mache lauft es nicht woran liegt das?

public class te {
public static int [][]tempArray;

public static void readData (){
In.open("f.txt");
int size = In.readInt();
tempArray = new int[size][2];
int in = 0;
for (int i = 0; i < size; i++){
in = In.readInt();
tempArray [i][0] = in;
in = In.readInt();
tempArray [i][1] = in;
}

In.close();
}
public static double mittelwert(){
int sum = 0;
for(int i = 0; i < tempArray.length; i++){
sum = sum + tempArray[i][1];
}
double res = sum /((double)tempArray.length);
return res;
}

public static int maxId(){
int maxIndex = 0;
for (int i = 0; i < tempArray.length; i++){
if(tempArray[maxIndex][1]< tempArray[i][1]){
maxIndex = i;
}
}
return tempArray[maxIndex][0];
}

public static int minId(){
int minIndex = 0;
for (int i = 0; i < tempArray.length; i++){
if (tempArray[minIndex][1] >  tempArray[i][1]);
minIndex = i;
}

  return tempArray[minIndex][0];

}
public static void main(String[] args) {
// TODO Auto-generated method stub
readData();
double m = mittelwert();
Out.println("Mittelwert: " + m);
int minid = minId();
Out.println("Id mit dem kleinsten Wert: " + minid);
int maxid = maxId();
Out.println("Id mit dem grössten Wert : " + maxid);


}

}


das programm lauft nicht warum ist die textdatei falsch eingeben?


Bezug
                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:36 Di 29.07.2008
Autor: lisa11

habe noch vergessen die Eingabe anzugeben der Textdatei

5258
89199 2773
89200 2768
89201 2765
.....
.....




Bezug
                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 21:52 Di 29.07.2008
Autor: Somebody


> gut ich mache new projet und gebe den namen des ortners ein
> dann erstellt er mir den ortner und dann habe ich darin
> noch die in und out datei kopiert kann ich in diesen ortner
> die f.txt datei speichern...
>  
> noch was ich habe folgendes programm wenn ich run mache
> lauft es nicht woran liegt das?

Dein Programm ist auf meinem System nicht direkt lauffähig: zumindest weil Du die Importanweisungen weggelassen hast. Zudem besteht die Gefahr, dass Du eine umgebungsspezifische Komponente importierst, die ich auf meinem System nicht zur Verfügung habe (schulspezifischer Müll).
Ich werde bis morgen Mittag nicht genügend Zeit haben, mir dies genauer anzuschauen. Tut mir leid. Ob ich dann morgen Mittag klüger daraus werde, ist unsicher. Es wäre schon wünschbar, dass es sich um ein insgesamt mittels Copy&Paste in jeder aktuellen Version von Java2 lauffähiges Programm handelt.
Wenn Du Code in diesem Forum publizieren willst, solltest Du das ganze in code-Tags einpacken, sonst gibt es potentiell eine Sauerei.

>  
> public class te {
>  public static int [][]tempArray;
>  
> public static void readData (){
>   In.open("f.txt");

Ist "In" wirklich eine Standard Java2 Klasse - oder ein Eigenbastel Deiner Schule? (Bem: Ich habe bisher in Java2 fast ausschliesslich GUI-Anwendungen geschrieben.)

>   int size = In.readInt();
>   tempArray = new int[size][2];
>   int in = 0;
>   for (int i = 0; i < size; i++){
>   in = In.readInt();
>   tempArray [0] = in;
> in = In.readInt();
> tempArray [1] = in;
> }
>
> In.close();
> }
> public static double mittelwert(){
> int sum = 0;
> for(int i = 0; i < tempArray.length; i++){
> sum = sum + tempArray[1];
> }
> double res = sum /((double)tempArray.length);
> return res;
> }
>
> public static int maxId(){
> int maxIndex = 0;
> for (int i = 0; i < tempArray.length; i++){
> if(tempArray[maxIndex][1]< tempArray[1]){
> maxIndex = i;
> }
> }
> return tempArray[maxIndex][0];
> }
>
> public static int minId(){
> int minIndex = 0;
> for (int i = 0; i < tempArray.length; i++){
> if (tempArray[minIndex][1] >  tempArray[1]);

> minIndex = i;
> }
>
> return tempArray[minIndex][0];
>
> }
> public static void main(String[] args) {
> // TODO Auto-generated method stub
> readData();
> double m = mittelwert();
> Out.println("Mittelwert: " + m);
> int minid = minId();
> Out.println("Id mit dem kleinsten Wert: " + minid);
> int maxid = maxId();
> Out.println("Id mit dem grössten Wert : " + maxid);
>
>
> }
>
> }
>
>
> das programm lauft nicht warum ist die textdatei falsch
> eingeben?

"Das Programm läuft nicht" ist eine hoffnungslos unspezifische Aussage. Was, genau, geschieht (nicht)? - Was sollte geschehen? (Ich kenne noch nicht eimal die Aufgabe, die dieses Programm lösen sollte.) - Solange ich dieses Programm bei mir nicht ausführen kann, brauche ich deutlich mehr Angaben.

Bezug
                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:28 Di 29.07.2008
Autor: lisa11

ja morgen teste ich dies nochmals aus ich habe mir eclipse 3.1 runtergeladen und den jdk6.0.1
morgen schreibe ich mehr rein...
mein lehrer hat das geschrieben und mir erklärt das es lauft aber
das tut es nicht...

morgen schreibe ich die aufgabenstellung rein...

Bezug
                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 08:15 Mi 30.07.2008
Autor: lisa11


In.readInt ist eine Javastandardeingabe keine Bastellei meiner Schule

Die Aufgabenstellung lautet:
Gegeben ist eine Datei mit Temperaturwerten in Zehntelsgrad Kelvin. die Zahl in der ersten Zeile gibt an, wieviele Datenwerte in der Datei sind.
Anschliessend folgen abwechslungsweise eine Indentifikationsnummer und der entsprechende Temperaturwert:

Die Werte lauten:

5258
89199 2773
89200 2768
89201 2765
89202 2764

Mehr habe ich nicht als Angabe aber der Algorithmus welchen ich
gesendet habe der sollte in Ordnung sein...

ich muss jetzt überprüfen wieso ich das run nicht starten kann in eclipse
3.1.

Gruss
e.w.

danke für die Hilfe bei mupad





Bezug
                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 13:26 Mi 30.07.2008
Autor: Somebody


> gut ich mache new projet und gebe den namen des ortners ein
> dann erstellt er mir den ortner und dann habe ich darin
> noch die in und out datei kopiert kann ich in diesen ortner
> die f.txt datei speichern...
>  
> noch was ich habe folgendes programm wenn ich run mache
> lauft es nicht woran liegt das?

Solange ich keine Implementation der hier verwendeten Klassen In und Out kenne, kann ich Dein Programm bei mir nicht ausführen. Wo also ist diese Klasse bei Dir definiert. Hast Du noch eine import-Anweisung in Deinem Quellcode, die Du nicht angegeben hast?

public class te [mm] $\{$
    public static int[][] tempArray;

    public static void readData() $\{$
      In.open("f.txt");

Die Datei, die hier geöffnet werden soll, hat hat den Namen "f.txt", nicht "tmp.txt", wie Du geschrieben hattest.
    int size = In.readInt();
      tempArray = new int[size][2];
      int in = 0;

Die Verwendung von in zur Zwischenspeicherung der gelesenen Werte ist im folgenden Code zwar reiner Leerlauf, aber es geht ja nicht um kosmetische Fragen: es geht um eine Fehlfunktion, die Du bisher nicht genügend klar beschrieben hast, und die ich mangels Implementation/Interface der Klassen In und Out nicht selbst testen kann.
     for (int i = 0; i < size; i++) $\{$
               in = In.readInt();
               tempArray[i][0] = in;
               in = In.readInt();
               tempArray[i][1] = in;
            $\}$
          In.close();
        $\}$

     public static double mittelwert() $\{$
        int sum = 0;
        for (int i = 0; i < tempArray.length; i++) $\{$
            sum = sum + tempArray[i][1];
        $\}$
        double res = sum / ((double) tempArray.length);
        return res;
    $\}$

    public static int maxId() $\{$
        int maxIndex = 0;
        for (int i = 0; i < tempArray.length; i++) $\{$
            if (tempArray[maxIndex][1] < tempArray[i][1]) $\{$
                maxIndex = i;
            $\}$
        $\}$
        return tempArray[maxIndex][0];
    $\}$

    public static int minId() $\{$
        int minIndex = 0;
        for (int i = 0; i < tempArray.length; i++) $\{$
            if (tempArray[minIndex][1] > tempArray[i][1])
                ;
            minIndex = i;
        $\}$
        return tempArray[minIndex][0];
    $\}$

    public static void main(String[] args) $\{$
        // TODO Auto-generated method stub
        readData();
        double m = mittelwert();
        Out.println("Mittelwert: " + m);
        int minid = minId();
        Out.println("Id mit dem kleinsten Wert: " + minid);
        int maxid = maxId();
        Out.println("Id mit dem grössten Wert : " + maxid);
    $\}$

$\}$ [/mm]



Bezug
                                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:42 Mi 30.07.2008
Autor: lisa11

okay in und out haben wir einfach reinkopiert in die Verzeichnisstruktur
in den Projektortner und das lauft es wurde nicht von uns implementiert
sondern wird immer kopiert. Wir haben In.java als Datei in den
Projektortner kopiert und auch die Out.java Datei dies ergibt eine Baumstruktur mit einer Auswahl von mehreren Outs und In..
ich hoffe du weist was ich meine sonst muss ich einen printscreen machen und dies ins netz stellen...

Bezug
                                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 15:57 Mi 30.07.2008
Autor: Somebody


> okay in und out haben wir einfach reinkopiert in die
> Verzeichnisstruktur
>  in den Projektortner und das lauft es wurde nicht von uns
> implementiert
>  sondern wird immer kopiert. Wir haben In.java als Datei in
> den
>  Projektortner kopiert und auch die Out.java Datei dies
> ergibt eine Baumstruktur mit einer Auswahl von mehreren
> Outs und In..
>  ich hoffe du weist was ich meine sonst muss ich einen
> printscreen machen und dies ins netz stellen...

Ich habe dazu eigentlich vorläufig nichts mehr zu sagen: Es ist für mich nicht wichtig, solange ich die Implementationen von In und Out nicht habe.
Dies besagt einfach, dass Dein Programm in meiner Umgebung nicht lauffähig ist: damit ist meine Möglichkeit, etwas zum angeblichen Fehlverhalten dieses Programmes und dem verwendeten aktuellen Verzeichnis aussagen zu können, entsprechend gering. Das einzige was mir beim Anschauen des Codes aufgefallen ist, ist dies: dass Du in Deiner ersten Frage von einer Anweisung In.open("tmp.txt") gesprochen hattest, dass in diesem Code aber effektiv die Datei "f.txt" geöffnet wird. Es nützt Dir also rein gar nichts, die Datei tmp.txt in das richtige Verzeichnis zu verschieben: diese Datei hat einfach den falschen Namen.

Bezug
                                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:06 Mi 30.07.2008
Autor: lisa11

meine Verzeichnisstruktur sieht so aus es sollte stimmen oder?

muss noch schauen wie der Quellcode von in out ist ..

[a]Datei-Anhange

Dateianhänge:
Anhang Nr. 1 (Typ: doc) [nicht öffentlich]
Bezug
                                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 07:28 Do 31.07.2008
Autor: lisa11

obige Mitteilung enthält als anhang den printscreen bitte ansehen ob
dies gut ist

gruss e.w.

Bezug
                                                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 08:16 Do 31.07.2008
Autor: Somebody


> obige Mitteilung enthält als anhang den printscreen bitte
> ansehen ob
>  dies gut ist

Es tut mir schrecklich leid, aber ich habe nicht vor, ein Word-Dokument von unbekannter Herkunft zu öffnen: damit könnte ich zumindest im Prinzip die Sicherheit meines PCs gefährden.
Ein Printrscreen ist ein Rasterbild, dass Du in jedes Paint Programm (unter Windows etwa Start>Programme>Zubehör>Paint) kopieren und von dort als PNG speichern kannst (bitte nicht als BMP speichern: weil sonst die Dateigrösse ganz blödsinnig wird).
Eine solche PNG-Datei ist für mich und andere keinerlei Sicherheitsrisiko - nicht so bei Word-Dokumenten. Ein Rasterbild kannst Du auch direkt in eine Frage oder Mitteilung einfügen (und nicht bloss als Anhang mitliefern).

Bezug
                                                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:40 Do 31.07.2008
Autor: lisa11

sehr gut ich werde das mit der pgn datei jetzt versuchen vielleicht geht es besser aber ich habe fehler in der java.in datei von hier aus kann ich das nicht seden mein notebook ist nicht an das netz angeschlossen von ihr aus geht das nicht ..am abend mehr

Bezug
                                                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:17 Mi 30.07.2008
Autor: lisa11

Aufgabe
das sieht so bei mir aus das In nur weiss ich nicht wie ich das mit dem tag soll machen

1: public class In {
2:
3: /** End of file indicator returned by read() or peek() when no more
4: characters can be read.
5: */
6: public  static final char eof   = '\uffff';
7:
8: private static final int empty = '\ufffe';
9:
10: private static final char eofChar = '\u0005';  // ctrl E
11: private static InputStream in;
12: private static LinkedList inputStack, bufferStack;
13: private static boolean done; // true if recent operation was successful
14: private static char buf;     // last read character
15: private static char[] LS;    // line separator (eol)
16:
17: private static char charAfterWhiteSpace() {
18:   char c;
19:   do c = read(); while (done && c <= ' ');
20:   return c;
21: }
22:
23: private static String readDigits() {
24:   StringBuffer b = new StringBuffer();
25:   char c = charAfterWhiteSpace();
26:   if (done && c == '-') {
27:     b.append(c);
28:     c = read();
29:   }
30:   while (done && Character.isDigit(c)) {
31:     b.append(c);
32:     c = read();
33:   }
34:   buf = c;
35:   return b.toString();
36: }
37:
38: private static String readFloatDigits() {
39:   StringBuffer b = new StringBuffer();
40:   char c = charAfterWhiteSpace();
41:   if (done && (c == '+' || c == '-')) {
42:     b.append(c);
43:     c = read();
44:   }
45:   while (done && Character.isDigit(c)) {
46:     b.append(c);
47:     c = read();
48:   }
49:   if (done && (c == '.')) {
50:     b.append(c);
51:     c = read();
52:     while (done && Character.isDigit(c)) {
53:       b.append(c);
54:       c = read();
55:     }
56:   }
57:   if (done && (c == 'e' || c == 'E')) {
58:     b.append(c);
59:     c = read();
60:     if (done && (c == '+' || c == '-')) {
61:       b.append(c);
62:       c = read();
63:     }
64:     while (done && Character.isDigit(c)) {
65:       b.append(c);
66:       c = read();
67:     }
68:   }
69:   buf = c;
70:   return b.toString();
71: }
72:
73:
74: /** Read a raw character (byte).
75: If an attempt is made to read beyond the end of the file,
76: eof is returned and done() yields false. Otherwise the read byte
77: is in the range 0..255.
78: */
79: public static char read() {
80:   char c;
81:   if (buf != empty) {
82:     c = buf;
83:     if (buf != eof) buf = empty;
84:   } else {
85:     try {
86:       c = (char)in.read();
87:     } catch (IOException e) {
88:       done = false;
89:       c = eof; buf = eof;
90:     }
91:   }
92:   if (c == eofChar && inputStack.size() == 0) { c = eof; buf = eof; }
93:   done = c != eof;
94:   return c;
95: }
96:
97: /** Current available raw characters.
98: In case of an error 0 is returned and done() yields false.
99: */
100: public static int available() {
101:   int avail;
102:
103:   try {
104:     avail = in.available();
105:   } catch(IOException exc) {
106:     avail = 0;
107:     done = false;
108:   }
109:
110:   return avail;
111: }
112:
113: /** Read a character, but skip white spaces (byte).
114: If an attempt is made to read beyond the end of the file,
115: eof is returned and done() yields false. Otherwise the read byte
116: is in the range 0..255.
117: */
118: public static char readChar() {
119:   return charAfterWhiteSpace();
120: }
121:
122: /** Read a boolean value.
123: This method skips white space and tries to read an identifier. If its value
124: is "true" the method returns true otherwise false. If the identifier is neither
125: "true" nor "false" done() yields false.
126: */
127: public static boolean readBoolean() {
128:   String s = readIdentifier();
129:   done = true;
130:   if (s.equals("true")) return true;
131:   else { done = s.equals("false"); return false; }
132: }
133:
134: /** Read an identifier.
135: This method skips white space and tries to read an identifier starting
136: with a letter and continuing with letters or digits. If a token of this
137: structure could be read, it is returned otherwise the empty string is
138: returned and done() yields false.
139: */
140: public static String readIdentifier() {
141:   StringBuffer b = new StringBuffer();
142:   char c = charAfterWhiteSpace();
143:   if (done && Character.isLetter(c)) {
144:     b.append(c);
145:     c = read();
146:     while (done && (Character.isLetter(c) || Character.isDigit(c))) {
147:       b.append(c);
148:       c = read();
149:     }
150:   }
151:   buf = c;
152:   done = b.length() > 0;
153:   return b.toString();
154: }
155:
156: /** Read a word.
157: This method skips white space and tries to read a word consisting of
158: all characters up to the next white space or to the end of the file.
159: If a token of this structure could be read, it is returned otherwise
160: an empty string is returned and done() yields false.
161: */
162: public static String readWord() {
163:   StringBuffer b = new StringBuffer();
164:   char c = charAfterWhiteSpace();
165:   while (done && c > ' ') {
166:     b.append(c);
167:     c = read();
168:   }
169:   buf = c;
170:   done = b.length() > 0;
171:   return b.toString();
172: }
173:
174: /** Read a line of text.
175: This method reads the rest of the current line (including eol) and
176: returns it (excluding eol). A line may be empty.
177: */
178: public static String readLine() {
179:   StringBuffer b = new StringBuffer();
180:   char c = read();
181:   while (done && c != LS[0]) {
182:     b.append(c);
183:     c = read();
184:   }
185:
186:   int i = 0;
187:   while (c == LS[i]) {
188:     ++i;
189:     if (i >= LS.length) { break; }
190:     c = read();
191:   }
192:
193:   if (i < LS.length) {
194:     buf = c;
195:   } else {
196:     buf = empty;
197:   }
198:   if (b.length() > 0) done = true;
199:   return b.toString();
200: }
201:
202: /** Read the whole file.
203: This method reads from the current position to the end of the
204: file and returns its text in a single large string. done() yields
205: always true.
206: */
207: public static String readFile() {
208:   StringBuffer b = new StringBuffer();
209:   char c = charAfterWhiteSpace();
210:   while (done) {
211:     b.append(c);
212:     c = read();
213:   }
214:   buf = eof;
215:   done = true;
216:   return b.toString();
217: }
218:
219: /** Read a quote-delimited string.
220: This method skips white space and tries to read a string in the form "...".
221: It can be used to read pieces of text that contain white space.
222: */
223: public static String readString() {
224:   StringBuffer b = new StringBuffer();
225:   char c = charAfterWhiteSpace();
226:   if (done && c == '"') {
227:     c = read();
228:     while (done && c != '"') {
229:       b.append(c);
230:       c = read();
231:     }
232:     if (c == '"') { c = read(); done = true; } else done = false;
233:   } else done = false;
234:   buf = c;
235:   return b.toString();
236: }
237:
238: /** Read an integer.
239: This method skips white space and tries to read an integer. If the
240: text does not contain an integer or if the number is too big, the
241: value 0 is returned and the subsequent call of done() yields false.
242: An integer is a sequence of digits, possibly preceded by '-'.
243: */
244: public static int readInt() {
245:   String s = readDigits();
246:   try {
247:     done = true;
248:     return Integer.parseInt(s);
249:   } catch (Exception e) {
250:     done = false; return 0;
251:   }
252: }
253:
254: /** Read a long integer.
255: This method skips white space and tries to read a long integer. If the
256: text does not contain a number or if the number is too big, the
257: value 0 is returned and the subsequent call of done() yields false.
258: A long integer is a sequence of digits, possibly preceded by '-'.
259: */
260: public static long readLong() {
261:   String s = readDigits();
262:   try {
263:     done = true;
264:     return Long.parseLong(s);
265:   } catch (Exception e) {
266:     done = false; return 0;
267:   }
268: }
269:
270: /** Read a float value.
271: This method skips white space and tries to read a float value. If the
272: text does not contain a float value or if the number is not well-formed,
273: the value 0f is returned and the subsequent call of done() yields false.
274: An float value is as specified in the Java language description. It may
275: be preceded by a '+' or a '-'.
276: */
277: public static float readFloat() {
278:   String s = readFloatDigits();
279:   try {
280:     done = true;
281:     return Float.parseFloat(s);
282:   } catch (Exception e) {
283:     done = false; return 0f;
284:   }
285: }
286:
287: /** Read a double value.
288: This method skips white space and tries to read a double value. If the
289: text does not contain a double value or if the number is not well-formed,
290: the value 0.0 is returned and the subsequent call of done() yields false.
291: An double value is as specified in the Java language description. It may
292: be preceded by a '+' or a '-'.
293: */
294: public static double readDouble() {
295:   String s = readFloatDigits();
296:   try {
297:     done = true;
298:     return Double.parseDouble(s);
299:   } catch (Exception e) {
300:     done = false; return 0.0;
301:   }
302: }
303:
304: /** Peek at the next character.
305: This method skips white space and returns the next character without removing
306: it from the input stream. It can be used to find out, what token comes next
307: in the input stream.
308: */
309: public static char peek() {
310:   char c = charAfterWhiteSpace();
311:   buf = c;
312:   return c;
313: }
314:
315: /** Open a text file for reading
316: The text file with the name fn is opened as the new current input
317: file. When it is closed again, the previous input file is restored.
318: */
319: public static void open(String fn) {
320:   try {
321:     InputStream s = new FileInputStream(fn);
322:     bufferStack.add(new Character(buf));
323:     inputStack.add(in);
324:     in = s;
325:     done = true;
326:   } catch (FileNotFoundException e) {
327:     done = false;
328:   }
329:   buf = empty;
330: }
331:
332: /** Close the current input file.
333: The current input file is closed and the previous input file is
334: restored. Closing the keyboard input has no effect but causes
335: done() to yield false.
336: */
337: public static void close() {
338:   try {
339:     if (inputStack.size() > 0) {
340:       in.close();
341:       in = (InputStream) inputStack.removeLast();
342:       buf = ((Character) bufferStack.removeLast()).charValue();
343:       done = true;
344:     } else {
345:       done = false; buf = empty;
346:     }
347:   } catch (IOException e) {
348:     done = false; buf = empty;
349:   }
350: }
351:
352: /** Check if the previous operation was successful.
353: This method returns true if the previous read operation was able
354: to read a token of the requested structure. It can also be called
355: after open() and close() to check if these operations were successful.
356: If done() is called before any other operation it yields true.
357: */
358: public static boolean done() {
359:   return done;
360: }
361:
362: static { // initializer
363:   done = true;
364:   in = System.in;
365:   buf = empty;
366:   inputStack = new LinkedList();
367:   bufferStack = new LinkedList();
368:   LS = System.getProperty("line.separator").toCharArray();
369:   if (LS == null || LS.length == 0) {
370:     LS = new char[] { '\n' };
371:   }
372: }



Bezug
                                                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 18:48 Mi 30.07.2008
Autor: Somebody


> das sieht so bei mir aus das In nur weiss ich nicht wie ich
> das mit dem tag soll machen

Ich verstehe nicht, was Du damit meinst. Ich habe, durch leichtes Editieren von In und ersetzen der Out.xxx(...) Aufrufe durch System.out.println(...) die Klasse te nun bei mir zum Laufen gebracht. Natürlich habe ich Deine bruchstückhaften Daten

3
89199 2773
89200 2768
89201 2765

verändern müssen: die Anzahl Zahlenpaare habe ich auf 3 verkleinert. Diese Datei, mit Namen f.txt habe ich im Wurzelverzeichnis meines Java2 Projektes deponiert. Mit diesen Modifikationen läuft der Code bei mir und liefert folgenden Output:

Mittelwert: 2768.6666666666665
Id mit dem kleinsten Wert: 89201
Id mit dem grössten Wert : 89199

Was ist daran nun falsch?


Bezug
                                                                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:12 Mi 30.07.2008
Autor: lisa11

alles ist richtig nur bekomme ich keine werte raus nur 0.0 ich habe dir ein
printscreen geschickt die eingelesene datei wird noch immer nicht verarbeitet...vielleicht muss ich mich besser ausdrücken ich lerne er hier laufend...

gruss e.w.

Bezug
                                                                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 21:32 Mi 30.07.2008
Autor: Somebody


> alles ist richtig nur bekomme ich keine werte raus nur 0.0
> ich habe dir ein
>  printscreen geschickt die eingelesene datei wird noch
> immer nicht verarbeitet...

Bei der Fehlersuche ist es wichtig, Schritt für Schritt sicherzustellen bis wohin das Programm richtig und ab welchem Punkt es nicht mehr richtig läuft.

Deine Formulierung kann bedeuten, dass die Datei eingelesen wird (d.h. das Programm die Daten von Dir nicht über die Konsole erhält). Sie kann aber auch bedeuten, dass Du die Daten über die Konsole eingibst (und dabei vielleicht etwas falsch machst). Bitte stelle dies ganz klar: Liest das Programm die Daten wirklich von einer Datei ein? D.h. läuft es bis zum Ausdruck von Mittelwert und kleinstem/grösstem Wert durch, ohne dass Du eine manuelle Eingabe machen musst?
  Die Datei f.txt sollte auch im Package Explorer sichtbar sein (jedenfalls wenn Du mit einem Rechtsklick auf das Projekt einen "Refresh" gemacht hast).
Kontrolliere ob dies wirklich die richtigen Daten sind.
Falls es die richtigen Daten sind brauchst Du Dir über die Frage, wo genau Du die Datei f.txt deponieren musst, keine Gedanken mehr zu machen. Dann liegt das verbleibende Problem bei den Daten, die sich in der Datei f.txt befinden, und/oder bei der Programmlogik.
Wie ich Dir geschrieben habe, steht in der ersten Zeile von f.txt die Anzahl der darauf folgenden Zahlenpaare. Im Anfangsstück, das Du mir gesandt hast, steht
5258
89199 2773
89200 2768
89201 2765
...

Falls aber in dieser Datei weniger als 5258 Zahlenpaare folgen, dann füllt das Programm die restlichen Werte mit 0 auf. Dies wird den Mittelwert und den kleinsten Wert entsprechend mehr oder weniger dramatisch drücken.
Aber der grösste Wert sollte dennoch nicht 0 sein. Ist das bei Dir so: ist zwar der kleinste Wert und ev. der Mittelwert 0, aber der grösste Wert nicht 0?
Falls ja, tippe ich auf eine falsche Dateilänge in der ersten Zeile. Du kannst in einem Texteditor schauen, wieviele Zeilen die Datei insgesamt hat. Sie müsste 5258+1=5259 Zeilen haben.

>vielleicht muss ich mich besser ausdrücken ich lerne er hier laufend...
Ja: gute Fragen zu stellen (d.h. Fragen gut zu stellen: sich beim Formulieren der Frage in den anderen zu versetzen, zu überlegen, was er denn wissen muss, um überhaupt eine brauchbare Antwort geben zu können) ist eine Kunst für sich. - Vielleicht sogar das Wichtigste, was Du bei dieser Übung lernen kannst.

Bezug
                                                                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 07:32 Do 31.07.2008
Autor: lisa11

ich werde jetzt ein paar aenderungen anbringen und schauen was passiert dann melde ich mich rück am nachmittag muss noch andere programme schreiben nur bei der txt dabei bei dem import klappt es nicht bin riesig unter zeitdruck...

gruss e.w.

Bezug
                                                                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:26 Do 31.07.2008
Autor: lisa11

mittlerweile ist es durch die Pfadangabe gelaufen wenn es auch nicht so ist wie er es will ich muss es eh auf papier lösen da schreibe ich den Pfad dann nicht hin sondern die Datei

gruss e.w.

Bezug
                                                
Bezug
Texteingabe: Implementation von Out
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:23 Mi 30.07.2008
Autor: lisa11

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Implementation von Out

import java.io.*;

/** Simple output to the console and to files.
<p>Copyright (c) 2005 Hanspeter Moessenboeck, University of Linz</p>

<p>This class is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.</p>

<p>This class is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the <a href="http://www.gnu.org/copyleft/gpl.html">
GNU General Public License</a> for more details.</p>



<p>This class allows printing formatted data either to the console
or to a file. It is intended to be used in an introductory
programming course when classes, packages and exceptions are unknown
at the beginning. To use it, simply copy Out.class into the
current directory. </p>

<p>All output goes to the current output file, which is initially
the console. Opening a file with open() makes it the new current
output file. Closing a file with close() switches back to the previous
output file.</p>
*/

public class Out {

private static PrintStream out;
private static PrintStream[] stack;
private static int sp;
private static boolean done;

/** Return true if the previous Out operation was
successful, otherwise return false. */
public static boolean done() {
return done && ! out.checkError();
}

/** Print the boolean value b either as "true" or "false". */
public static void print(boolean b) { out.print(b); }

/** Print the character value c. */
public static void print(char s) { out.print(s); }

/** Print the integer value i. */
public static void print(int i) { out.print(i); }

/** Print the long value l. */
public static void print(long l) { out.print(l); }

/** Print the float value f. */
public static void print(float f) { out.print(f); }

/** Print the double value d. */
public static void print(double d) { out.print(d); }

/** Print the character array a. */
public static void print(char[] a) { out.print(a); }

/** Print the String s. */
public static void print(String s) { out.print(s); }

/** Print the Object o as resulting from String.valueOf(o). */
public static void print(Object o) { out.print(o); }

/** Terminate the current line by writing a line separator string.
On windows this is the character sequence '\r' and '\n' */
public static void println() { out.println(); }

/** Print the boolean value b and terminate the line. */
public static void println(boolean b) { out.println(b); }

/** Print the character value c and terminate the line. */
public static void println(char s) { out.println(s); }

/** Print the integer value i and terminate the line. */
public static void println(int i) { out.println(i); }

/** Print the long value l and terminate the line. */
public static void println(long l) { out.println(l); }

/** Print the float value f and terminate the line. */
public static void println(float f) { out.println(f); }

/** Print the double value d and terminate the line. */
public static void println(double d) { out.println(d); }

/** Print the character array a and terminate the line. */
public static void println(char[] a) { out.println(a); }

/** Print the String s and terminate the line. */
public static void println(String s) { out.println(s); }

/** Print the Object o as resulting from String.valueOf(o)
and terminate the line. */
public static void println(Object o) { out.println(o); }

/** Open the file with the name fn as the current output file.
All subsequent output goes to this file until it is closed.
The old output file will be restored when the new output file is closed. */
public static void open(String fn) {
try {
PrintStream s = new PrintStream(new FileOutputStream(fn));
stack[sp++] = out;
out = s;
} catch (Exception e) {
done = false;
}
}

/** Close the current output file.
The previous output file is restored and becomes the current output file. */
public static void close() {
out.flush();
out.close();
if (sp > 0) out = stack[--sp];
}

static { // initializer
done = true;
out = System.out;
stack = new PrintStream[8];
sp = 0;
}

ich hoffe es genügt

Bezug
                                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:58 Mi 30.07.2008
Autor: Somebody


> Implementation von Out

Nun habe ich also den unmodifizierten Code Deiner Klasse te und noch immer denselben Output (für die ersten 3 Paare der Datei):
Mittelwert: 2768.6666666666665
Id mit dem kleinsten Wert: 89201
Id mit dem grössten Wert : 89199

aber nun auch mit Deinen Out.println() anstelle meiner System.out.println().
Einziger Unterschied beim Code ist in der Klasse In: dort habe ich einige import-Anweisungen hinzufügen müssen und ich habe auch die LinkedList-Klassen mit einem Typ als Parameter definieren müssen (typenspezifische Instanzen generischer Listen anstelle von vermutlich typenfreien Listen).

Bezug
                                                                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:14 Mi 30.07.2008
Autor: lisa11

gut und wie sieht das programm bei dir jetzt aus?

Bezug
                                                                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 21:37 Mi 30.07.2008
Autor: Somebody


> gut und wie sieht das programm bei dir jetzt aus?

Ich habe die Klasse te nicht verändert. Änderungen waren nur in der Klasse In nötig: einige import Anweisungen
1: import java.io.FileInputStream;
2: import java.io.FileNotFoundException;
3: import java.io.IOException;
4: import java.io.InputStream;
5: import java.util.LinkedList;

und dann die Änderung einer typenfreien LinkedList auf zwei typenspezifische LinkedLists:
1:     private static LinkedList<InputStream> inputStack;
2:     private static LinkedList<Character> bufferStack;

Aber ich kann nicht glauben, dass dieser Unteschied zum "erfolgreichen" Run auf meinem System führt. Ich habe schon eher den Verdacht, dass entweder die Daten in Deiner Datei f.txt falsch sind (insbesondere die in der ersten Zeile enthaltene Länge zu gross) oder dass Du bei der manuellen Eingabe etwas falsch machst.

Bezug
                                                                                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 07:34 Do 31.07.2008
Autor: lisa11

meine manuelle eingabe ist: Zahl und dann gebe ich einen buchstaben ein als Ende darf ich das nicht?


Bezug
                                                                                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 08:08 Do 31.07.2008
Autor: Somebody


> meine manuelle eingabe ist: Zahl und dann gebe ich einen
> buchstaben ein als Ende darf ich das nicht?

In In.java steht
1: private static final char eofChar = '\u0005'; // ctrl E

Die eigentliche Entscheidung, ob von der Konsole gelesen wird und welche Eingabe den Konsolen-Input abschliesst, wird von In.read() gefällt:
1: /**
2:  * Read a raw character (byte). If an attempt is made to read beyond the end
3:  * of the file, eof is returned and done() yields false. Otherwise the read
4:  * byte is in the range 0..255.
5:  */
6: public static char read() {
7:     char c;
8:     if (buf != empty) {
9:         c = buf;
10:         if (buf != eof)
11:            buf = empty;
12:         } else {
13:             try {
14:                 c = (char) in.read();
15:             } catch (IOException e) {
16:             done = false;
17:             c = eof;
18:             buf = eof;
19:             }
20:         }
21:      if (c == eofChar && inputStack.size() == 0) {
22:          c = eof;
23:          buf = eof;
24:      }
25:      done = c != eof;
26:      return c;
27: }

Ich würde also erwarten, dass die Eingabe durch Ctrl+E abgeschlossen wird. Effektives Experimentieren zeigt aber, dass dies nicht stimmt: Die manuelle Eingabe wird mit Ctrl+Z abgeschlossen (was ich eigentlich auch erwartet hätte).
Es ist allerdings so: sobald Du genügend viele Zahenpaare über die Konsole eingegeben hast (eben soviele, wie Deine erste Zahleneingabe angab), dann läuft das Programm sogleich weiter, druckt Mittelwert sowie grössten und kleinsten Wert auf der Konsole und terminiert. Wenn Du also die Eingabe mit Ctrl+Z vorzeitig abbrichst, dann erhältst Du in der Regel 0 als kleinsten Wert, weil dann die fehlenden Zahlenpaare durch 0 0 ersetzt werden. Bei der manuellen Eingabe solltest Du also nicht mit Ctrl+Z abschliessen, sondern solange weitere Zahlenpaare eingeben, bis das Programm das Ergebnis ausdruckt und terminiert.

Bezug
                                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:25 Mi 30.07.2008
Autor: lisa11

ich wusste zuerst gar nicht wo es zu finden war jetzt habe ich die in und out implementation gefunden man muss in der console nachsehen

gruss e.w. (tut mir leid ich kenne mich in java sehr schlecht aus lerne aber immer dazu ich kann nur pascal)

Bezug
                                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:49 Mi 30.07.2008
Autor: Somebody


> ich wusste zuerst gar nicht wo es zu finden war jetzt habe
> ich die in und out implementation gefunden man muss in der
> console nachsehen
>  
> gruss e.w. (tut mir leid ich kenne mich in java sehr
> schlecht aus lerne aber immer dazu ich kann nur pascal)

Kein Grund sich zu entschuldigen: wenn man lange Zeit nichts mehr falsch macht, dann lernt man offenbar auch nichts Neues...

Bezug
                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 09:42 Mi 30.07.2008
Autor: lisa11

meinst du damit wenn ich mit new projekt ein verzeichnis anlege in diesen
Baum rein?

e.w.

Bezug
                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:00 Mi 30.07.2008
Autor: lisa11

Wurzelverzeichnis das scr des Projektfolders?



Bezug
                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 12:58 Mi 30.07.2008
Autor: Somebody


> meinst du damit wenn ich mit new projekt ein verzeichnis
> anlege in diesen
>  Baum rein?

Wie ich schon geschrieben habe, ist das aktuelle Verzeichnis bei der Ausführung eines Programmes (Run oder Debug) in Eclipse das Wurzelverzeichnis des betreffenden Projektes. Um ein konkretes Beispiel zu zeigen. Der sogenannte Package Explorer (linker Rand des untenstehenden Bildes) zeigt mehrere solche Projekte:
[Dateianhang nicht öffentlich]

Dieser vom Package Explorer angezeigten Baumstruktur entspricht eine Verzeichnisstruktur (oder, meinetwegen, Ordnerstruktur) auf der Disk, etwa so:

[Dateianhang nicht öffentlich]

Die Bilddateien A4.6.png, A4.7.png usw. befinden sich im Wurzelverzeichnis AnimCropper des Projektes AnimCropper (also des Projektes gleichen Namens). Projektname und Name des unter dem Workspace-Verzeichnis liegenden Wurzelverzeichnis eines Projektes stimmen überein.

Aber mir ist nach wie vor nicht klar, wo und wie Deine Klasse In definiert ist. Daher ist es reine Speklation meinerseits anzunehmen, dass das Verzeichnis, aus dem Du mit In.open("tmp.txt") die Datei tmp.txt lesen willst, auch tatsächlich mit dem aktuellen Verzeichnis (im Sinne der default Einstellungen für ein Projekt unter Eclipse) übereinstimmt.

Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Anhang Nr. 2 (Typ: png) [nicht öffentlich]
Bezug
                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:44 Mi 30.07.2008
Autor: lisa11

gut ich muss das in die jre libary reinkopieren wie ich sehe bei dir ich hatte das eine stufe weiter oben

Bezug
        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 19:39 Mi 30.07.2008
Autor: Somebody


> es wird eine Textdatei eingelesen mit In.open("tmp.txt")
>  eingebunden in ein Programm
>  Ich habe eine Textdatei tmp.txt geschrieben wo speichere
> ich dies ab damit das Programm  In.open ("tmp.txt") lesen
> kann
>  wo lege ich dies im eclipseordner ab?

Du hast mir nach wie vor nicht gesagt, worin das von Dir beobachtete Fehlverhalten des Programmes denn nun genau besteht.
Aber ich weiss inzwischen mindestens dies: Falls die Datei nicht gefunden wird, bleibt das Programm ohne jede Fehlermeldung hängen (weil bei der Implementation von In.open() die FileNotFoundException einfach verschluckt wird: gestümpert! - aber wahrscheinlich wollte man euch mit Exceptions nicht belästigen. Dafür hat man nun das Problem, dass Fehlermeldungen nicht bis zu eurem Programm bzw. dem Benutzer durchgereicht werden.

Wenn die in der ersten Zeile enthaltene Länge der Liste zu gross (also falsch) ist, dann geschieht auch etwas Lustiges: dann werden die fehlenden Zahlenpaare als 0 0 angenommen - mit entsprechend belustigendem Ergebnis. - Aber immerhin stürzt das Programm deswegen nicht ab.
Also bitte: Worin besteht denn nun das von Dir beanstandete Fehlverhalten des Programmes. Bleibt es hängen? - Dann dürfte es aufgrund meiner bisherigen Experimente schon daran liegen, dass die Datei f.txt bei Dir nicht gefunden wird.

Nachtrag (1. Revision): Das Programm bleibt im Falle, dass die Datei f.txt nicht gefunden wird, hängen, weil es in diesem Falle die Daten von der Konsole zu lesen versucht. Man könnte also die Daten eintippen oder mit Copy&Paste ins Konsolenfenster von Eclipse einfügen.

Bezug
                
Bezug
Texteingabe: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 21:10 Mi 30.07.2008
Autor: lisa11

ja genau so es wird immer 0.0 ausgegeben und stürzt nicht ab so ist das
problem morgen muss ich noch drüber nachdenken
stimmt das wie ich die datei  eingefügt habe in den ortner?

gruss e.w.

Bezug
                        
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:16 Mi 30.07.2008
Autor: lisa11

wie soll ich das ganze ändern damit nicht nur 0 0 und der grösste Wert rauskommt?
habe ich die Textdatei vom printscreen richtig eingefügt?

Bezug
                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:18 Mi 30.07.2008
Autor: lisa11

morgen schaue ich wieder ins netz jetzt nicht mehr bis morgen

Bezug
                                
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 21:44 Mi 30.07.2008
Autor: Somebody


> wie soll ich das ganze ändern damit nicht nur 0 0 und der
> grösste Wert rauskommt?

Aha: der vermutete Effekt. Also tippe ich darauf, dass die in der ersten Zeile enthaltene Anzahl Zahlenpaare zu gross ist. Du musst somit zählen, wieviele Zahlenpaare die Datei tatsächlich hat (zähle einfach mal die Anzahl Zeilen in f.txt und subtrahiere dann davon 1) und die alte Länge in der ersten Zeile von f.txt mit der so bestimmten wahren Anzahl Zahlenpaare der Datei überschreiben.

>  habe ich die Textdatei vom printscreen richtig eingefügt?

Ich versteh nur Bahnhof: von einem PrintScreen erhältst Du doch keine Textdatei sondern eine Bilddatei. Zudem: in keinem Deiner Beiträge in denen Du von diesem PrintScreen schreibst, finde ich eine Datei (weder Bild noch Text).

Bezug
                                        
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:37 Do 31.07.2008
Autor: lisa11

so jetzt weiss ich endlich was los ist die java.in datei haben fehler in der Implementation ich werde es ihnen heute Abend schicken ich selber kann
das nicht korrigieren dazu kann ich viel zu wenig
(ich sehe ich habe in den reinkopierten dateien massive fehler muss schauen wo ich fehlerlose dateien herbekomme)

bis am abend...

gruss e.w.

Bezug
                
Bezug
Texteingabe: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:42 Do 31.07.2008
Autor: lisa11

wo soll ich die daten eintippen alle programme bleiben bei mir hängen das problem ist noch immer nicht gelöst..

Bezug
                        
Bezug
Texteingabe: Antwort
Status: (Antwort) fertig Status 
Datum: 12:49 Do 31.07.2008
Autor: Somebody


> wo soll ich die daten eintippen alle programme bleiben bei
> mir hängen das problem ist noch immer nicht gelöst..

Wenn Du das Programm einfach unter Eclipse laufen lässt, indem Du Run oder Debug klickst, dann sollte in der Debug-Ansicht am unteren Rand des Eclipse Hauptfensters ein Konsolen-Fenster sichtbar sein, in das Du Deine manuellen Eingaben machen kannst. Im untenstehende Beispiel habe ich nur gerade zwei Zahlenpaare eingetippt. Das Programm hat dann sogleich das Ergebnis ausgedruckt (ebenfalls im Konsolen-Fenster):
[Dateianhang nicht öffentlich]


Falls das Konsolen-Fenster wider Erwarten bei Dir nach dem Starten des Programmes mit Run oder Debug nicht sichtbar sein sollte, kannst Du es durch Auswählen des entsprechenden Menüeintrages im "Windows" Menü von Eclipse einblenden:
[Dateianhang nicht öffentlich]



Nachtrag (1. Revision): Es fällt mir gerade auf, dass der obige Output falsch ist (jedenfalls nach meiner Interpretation, wie das Programm in etwas funktionieren sollte): die Id des kleinsten Wertes sollte ja meiner Meinung nach 1 sein.
Dies scheint ein Fehler in der bestehenden Implementation von te.minId() zu sein:
1: public static int minId() {
2:     int minIndex = 0;
3:     for (int i = 0; i < tempArray.length; i++) {
4:         if (tempArray[minIndex][1] > tempArray[i][1])
5:             ;
6:         minIndex = i;
7:     }
8:     return tempArray[minIndex][0];
9: }

Dies ist evidenter Unsinn, weil hier der Test if (...) gar keine Wirkung hat. minIndex = i wird in jedem Falle ausgeführt. Ich schlage statt dessen folgendes vor:
1: public static int minId() {
2:     int minIndex = 0;
3:     for (int i = 0; i < tempArray.length; i++) {
4:         if (tempArray[minIndex][1] > tempArray[i][1]) {
5:             minIndex = i;
6:     }
7:     return tempArray[minIndex][0];
8: }

Diese Änderung führt dann, bei meiner obigen Testeingabe, zum richtigen Output, nämlich:
Mittelwert: 3.0
Id mit dem kleinsten Wert: 1
Id mit dem grössten Wert : 3


Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Anhang Nr. 2 (Typ: png) [nicht öffentlich]
Bezug
                                
Bezug
Texteingabe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:19 Do 31.07.2008
Autor: lisa11

ich habe das jetzt so gelöst es ist nicht so wie er es will das ist mir so
egal ich muss es hier überprüfen ich habe es als Pfad angegeben mit
"C:/f.txt" und somit lauft es ich danke dir für soviel hilfe du bist gut
dies war eine grosse Hürde jetzt aber die Algorithmen sind nicht so einfach alle aber wenigstens kann ich jetzt verarbeitete Datei ansehen...

gruss e.w.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Schul-Informatik Algorithmen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de