Dokumentationsausgabe

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, ich habe ein Problem mit meinem Programm, das die Dokumentationen ausgeben soll.
Ein Überblick über das Programm:
1. Zeilen, die mit "//" anfangen sind Output.
2. Zeilen, die mit "/*" anfangen sind Output.
3. Zeilen, die mit "*/" anfangen sind Output.
4. Alle Zeilen zwischen denen, die mit "/*" und "*/" anfangen sind Output.

Mein Vorschlag wäre:
import java.io.*;
public class Dokumentationsausgabe {
public static void main (String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
boolean text;
while (stdin.readLine() != "") {
String input = stdin.readLine();
if (input.startsWith("//")) System.out.println(input);


if (input.startsWith("/*")) text = true;
if (input.startsWith("*/")) {
text = false;
System.out.println(input);
}
if (text = true) System.out.println(input);
}
}
}

Doch wenn ich das Programm ausführe klappt es nicht, wie es klappen soll.
z.B.
Das
ist
ist
ein
Test
Test
//nur
//der
//der
//der
//klappt
//nicht
//nicht
//nicht

Das Fette ist die Eingabe (hier manuell, später dann in einer Textdatei). Das "normal" geschriebe die Ausgabe.
Ich weiß leider nicht wo der Fehler ist. Es sollte eigentlich wie oben beschrieben funktionieren.
Bitte um Hilfe
 
G

Guest

Gast
Danke, dass du mir helfen wolltest, doch was bringt mir der Link?
Ich will das ja nicht dass in HTML Dokumentationsdaten erstellt werden, sonder nur die ganzen Kommentare rauslesen. Kannst du mir nicht sagen, was ich falsch gemacht habe, oder mir einen Code geben der Funktioniert?
Thx
 

Kim Stebel

Bekanntes Mitglied
Code:
import java.io.*; 
public class Dokumentationsausgabe { 
public static void main (String [] args) throws IOException { 
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 
boolean text=false; 
String input;
while (!(input=stdin.readLine()).equals("")) { 

if (input.startsWith("//")) System.out.println(input); 


if (input.startsWith("/*")) text = true; 
if (input.startsWith("*/")) { 
text = false; 
System.out.println(input); 
} 
if (text = true) System.out.println(input); 
} 
} 
}
 

NTB

Bekanntes Mitglied
Erklärung von mir noch dazu:
In Deinem Code hast du zweimal .readline() ausgeführt. Das wurde hier vermieden.
 
G

Guest

Gast
Danke. Jetzt ist das Problem mit dem : mal wird was wiedergegeben und dann wieder nicht, gelöst. :applaus:
Ich habe aber immer noch ein Problem, das ich nicht verstehe.
Das sollte nicht wiedergegeben werden
Das sollte nicht wiedergegeben werden
// Das sollte nur einmal output sein

// Das sollte nur einmal output sein
// Das sollte nur einmal output sein

Das Fette ist wieder der Input, und das normale der Output.
Eigentlich sollte kein Output dasein, solange ich nicht "//", "/*" oder "*/" davor setzte. Doch das ist hier der Fall, und ich verstehe nicht warum. Des Weitern kommt der Output 2x, wenn ich "//" vor meine Eingabe setzte. Das sollte eigentlich auch nicht sein. Könnt ihr mir bitte bei diesem Bug helfen?
 

Kim Stebel

Bekanntes Mitglied
Und wie sieht dein code jetzt aus? Hört sich so an als hätte text den wert true. Hast du
Code:
boolean text=false;
aus meinem code übernommen??
 
G

Guest

Gast
Der Code sieht jetzt so aus:
Code:
import java.io.*;
public class Dokumentationsausgabe {
public static void main (String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
boolean text = false;
String input;
while (!(input=stdin.readLine()).equals("")) {

if (input.startsWith("//")) System.out.println(input);

if (input.startsWith("/*")) text = true;
if (input.startsWith("*/")) {
text = false;
System.out.println(input);
}
if (text == true) System.out.println(input);
}
}
}

Wie kann ich das Häckchen setzten, da das Problem ja gelöst worden ist?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben