% in der Standartausgabe wo es nicht hin soll

  • Themenstarter Themenstarter FranziM123
  • Beginndatum Beginndatum
F

FranziM123

Gast
Erst mal ein Hallo und vielen Dank im voraus an alle Beteiligten.

Ich möchte die ArrayList gerade, die mit int werten gefüllt ist ohne die Zeichen [ ] , in einer Zeile ausgeben.
Das funktioniert auch aber am ende der zeile steht dann ein Prozentzeichen auf der Standartausgabe, dass ich nicht möchte

Java:
   if (str1.equals(str2)) {
      for (int k=0; k<gerade.size(); k++) {
         System.out.print(gerade.get(k)+" ");
      }
   }

Hab lange gesucht und komm nicht so recht weiter (ein % Zeichen wird in der google Suche anscheinend nicht mal interpretiert nicht ma so "%")

Am liebsten wärs mir, wenn jemand mein Fehler bezeichnen könnte. Ich wär mit einer Alternative aber auch sehr glücklich.
 
Zuletzt bearbeitet von einem Moderator:
Prozentzeichen kommen nicht von selber, über ein Programm muss man schon Kontrolle habe,
starte mit einem Hello-Word-Programm, gibt das nur Hello World aus und kein %? gut

danach arbeite Schritt für Schritt dein Programm ein kopiere Klassen, Methoden, einzelne Aufrufe,
schaue im ganzen Programm nach System.out.x-Aufrufen, irgendwo musst du es stehen haben, von selber passiert das nicht

poste evtl. das ganze Programm
 
Also dein Code ist so weit in Ordnung. Das %-Zeichen kommt irgendwie in deine Liste hinein und wird als String ausgegeben.
Um zu ermitteln, wie das Zeichen in deine Liste kommt, musst du deinen Code vom Füllen der Liste mal durchgehen.
 
Danke für die rasche Antwort
Hier ist nun das ganze Programm:
[Java]

String str1 = new String(argv[2]);
String str2 = new String("vorderseite");
String str3 = new String("rueckseite");

//Array Liste anlegen
ArrayList gerade = new ArrayList();
ArrayList ungerade = new ArrayList();

//vorderseite
for (int i = 0; i <= (seitenzahl); i=i+(2*subseiten)){
for (int j = 1; j<=subseiten; j++){
if (i+j <= seitenzahl) {
gerade.add(i+j);
}
}
}

//rückseite
for (int i = subseiten; i <= (seitenzahl); i=i+(2*subseiten)){
for (int j = 1; j<=subseiten; j++){
if (i+j <= seitenzahl) {
ungerade.add(i+j);
}
}
}

//ausgeben.

if (str1.equals(str2)) {
for (int k=0; k<gerade.size(); k++) {
System.out.print(gerade.get(k)+" ");
}
}


}
}
[/Java]

Das Programm soll Seitenzahlen Ausgeben die ich dann ducken möchte und Zwar will ich beidseitig drucken und mehrere Seiten pro Blatt. Man kann Angeben wie viele Seiten es ursprünglich gab und wie viele Seiten auf einer Seite später gedruckt werden und ob es später die Vorderseite ist oder die Rückseite.
Interessant ist auch, dass wenn ich anstatt print println nehme und zeilenweise die Elemente der ArrayList ausgebe ist da kein prozentzeichen.

lg Franzi
 
ein vollständiges Programm ist das nicht, Variablen wie seitenzahl fehlen,
von Programmparametern wie argv[2] sollte das testweise besser auch nicht abhängen
falls andere das überprüfen können sollen, gib Dummy-Werte im Programm vor,

deine letzte Bemerkung zu println() läßt aber stark rätseln, vielleicht wirklich irgendwas bei dir kaputt,

schön wäre zur Abklärung aller normalen Ursachen ein komplettes Programm mit Klasse(n), main-Methode und einfach allem, so kurz wie möglich


----

nebenbei:
> String str1 = new String(argv[2]);
> String str2 = new String("vorderseite");

->

String str1 = argv[2];
String str2 = "vorderseite";

niemals irgendwo new String() schreiben!
 
Oh sorry war leider nur ein fragment des codes (copy-paste fehler)

hier der ganze Code:

[Java]


import java.util.ArrayList;

public class seitenreihe{

public static void main(String argv[]) {


int seitenzahl = Integer.parseInt(argv[0]);
int subseiten = Integer.parseInt(argv[1]);

String str1 = new String(argv[2]);
String str2 = new String("vorderseite");
String str3 = new String("rueckseite");

//Array Liste anlegen
ArrayList gerade = new ArrayList();
ArrayList ungerade = new ArrayList();

//vorderseite
for (int i = 0; i <= (seitenzahl); i=i+(2*subseiten)){
for (int j = 1; j<=subseiten; j++){
if (i+j <= seitenzahl) {
gerade.add(i+j);
}
}
}

//rückseite
for (int i = subseiten; i <= (seitenzahl); i=i+(2*subseiten)){
for (int j = 1; j<=subseiten; j++){
if (i+j <= seitenzahl) {
ungerade.add(i+j);
}
}
}

//ausgeben.
// if (str1.equals(str2)) System.out.println(gerade);
// if (str1.equals(str3)) System.out.println(ungerade);

//System.out.println(gerade.size());
//System.out.println(gerade.get(1));

if (str1.equals(str2)) {
for (int k=0; k<gerade.size(); k++) {
System.out.print(gerade.get(k)+" ");
}
}


}
}

[/Java]
 
ok, also am Code ist nichts derartiges,
ich kann noch nach einen Screenshot fragen aber habe eigentlich keine Idee wo das herkommen kann

----

ganz tief aus der Wunderkiste:
vielleicht hilft es ohne Kenntnis der Ursache,
wenn du im Programm längere Strings mit + zusammenbaust und dann doch nur println() verwendest
statt alles einzeln auszugeben
 
Ok hier das Egebnis eines Tests dass ich gemacht hab:

Programmaufruf: java seitenreihe 100 4 vorderseite
Ausgabe: 1 2 3 4 9 10 11 12 17 18 19 20 25 26 27 28 33 34 35 36 41 42 43 44 49 50 51 52 57 58 59 60 65 66 67 68 73 74 75 76 81 82 83 84 89 90 91 92 97 98 99 100 %
 
schaue auch immer nach weiteren Postings von mir zwischendurch, geht ja schnell hin und her hier, ich editiere auch teilweise
verwendest du eigentlich BlueJ oder sonst was komisches?

dein Programm hat überhaupt kein println() bisher, vielleicht geht das % weg, woher es auch immer kommt,
wenn du wenigstens einmal per
System.out.println();
am Ende einen Zeilenumbruch einbaust
 
Also ich hab auch probiert in das println statement die Schleife reinzubasteln. Hat aber nicht geklappt. Da ich vom vielen rumprobieren schon etwas entnervt binn stell ich jetzt einfach ma die dreiste Frage wie du dir des genau vorgestellt hast das mit + und println zusammenzuwursteln.

lg Franzi
 
hm könnte helfen aber das nützt mir dann nichts. Ich möchte die Ausgabe nämlich direkt per Pipe einem anderen Unix Programm übergeben
 
Ich benutze Vim und die Komandozeile (genauer gesagt zsh) und hab nen Linux Host. Ich benutz die neuste Java Version von Sun.
 
Warnungen sind doch für irgend etwas da - also bitte nicht ignorieren und

Java:
	ArrayList<Integer> gerade = new ArrayList<Integer>();
	ArrayList<Integer> ungerade = new ArrayList<Integer>();

schreiben.

Was für Daten "futterst" du denn deinem Programm - glaub es einfach, es kann nicht am Prgramm liegen wenn da ein % oder was auch immer rauskommt.
 
print("a");
print("b");

==

String x = "";
x +="a";
x +="b";
print(x);

wenn du aber das ganze Programm ohne println() haben willst, dann bleibt das % vielleicht,

---

zum Testen nebenher:
du könntest dein Programm komplett zerstören und einfach nur
print(1+" ");
print(2+" ");
oder noch weniger schreiben, kommt da auch %?,
bei wieviel Zahlen, bei wievielen nicht?
 
OK
zwei mal Danke
einmal an SlaterB das Dummy Programm mit 2 mal print gibt bei mir auch das % Zeichen aus
und einmal an Andy_Ch die Fehlermeldung hab ich jetzt auch weg bekommen

Ich denk ich muss mir da nen Workaround einfallen lassen, wenn nicht noch einer nen Geistesblitz hat. Binn für alle Vorschläge dankbar.
 
Das % kommt von zsh und deutet auf einen fehlenden line-separator in der Ausgabe hin (\n). Füge am Ende deines Programms noch ein
Code:
System.out.println();
ein und gut ist.
 
Danke für den Hinweis

Konnte es inzwischen auch selbst einkreisen.
Ich hab einfach ma den Output in ne Datei gelegt:

[Java]
File outputFile = new File("vorderseite.txt");
FileWriter out = new FileWriter(outputFile);

if (str1.equals(str2)) {
for (int k=0; k<gerade.size(); k++) {
out.write(gerade.get(k)+" ");
}
}
out.close();
[/Java]

und da ist auch kein %

Danke an Alle
 
Und noch ein Nachtrag

Es gibt auch keine überflüssige Leerzeile wenn man einfach noch println hinzufügt, vor der ich angst hatte.

Freut mich das Jetzt alles zu meiner Zufriedenstellung geklärt ist und ich so einiges dabei gelernt hab.

Da das Alles so super keklappt hat werd ich mich bestimmt bald hier anmelden (spätestens beim nächsten Java Problem und die werden kommen denn ich hab bald ein Programierpraktikum)

lg Franzi
 

Neue Themen


Zurück
Oben