Schleifenproblem

Status
Nicht offen für weitere Antworten.
F

Filip

Gast
Code:
/** Übung 2d: */

public class Hauptprogramm2d  
{

 	/** Hauptprogramm */
	public static void main(String args[]) 
	{
		
		short zahl = Short.parseShort(args[0]);
		short Ende = 0;

		while (zahl <= Ende)
		{
			System.out.print("$");
			zahl--;
		}
					
	} // main

} // class Hauptprogramm2d

Wo liegt der Fehler?
 
7

777

Gast
Bin selber noch Anfänger und weiß daher nicht obs stimmt.. aber warum nicht so:


System.out.println("$");
 
F

Filip

Gast
Das kommt auch nichts. Soweit ich weiss ist der Unterschied zwischen System.out.println und System.out.print, dass bei der ersten Methoden immer eine neue Zeile angefangen wird und bei der zweiten alles in einem kommt.
 
7

777

Gast
Mhhh... wir mussten bei uns immer noch eine Instanz bilden bevor wir rechnen... aber ich weiß echt nicht, was die bringen sollen... aber vll sollten hier mal Profis oder Leute antworten, die Java können xD

Also das Instanz bilden ging bei uns hier so:


MyClass m = new MyClass(); //Instanz wird gebildet


Aber komischerweise stelle ich grad fest, dass dein Programm mit meinem Compiler funktioniert xD
David


Dann wird der scheiss nämlich in den RAM geladen... naaja
 

lin

Top Contributor
Code:
public class Hauptprogramm2d  
{ 

   /** Hauptprogramm */ 
   public static void main(String args[]) 
   { 
       
      short zahl = Short.parseShort(args[0]); 
      short ende = 0; 

      while (zahl != ende) {
    	  System.out.print("$");
    	  if(zahl >= ende) { 
    		  zahl--;
    	  } else if(zahl <= ende) {
    		  zahl++;
    	  } 
      } 
                
   } // main 

} // class Hauptprogramm2d

Musst jetzt natürlich noch ein Argument übergeben, aber so funzts sowohl für neg. Argumente wie auch für positive.

EDIT: ps: brauchst keine Instanz zu bilden, steht ja alles in der main-Methode drinn.
 
B

bygones

Gast
Code:
short zahl = Short.parseShort(args[0]);
      short Ende = 0;

      while (zahl <= Ende)
      {
         System.out.print("$");
         zahl--;
      }
die schleife kann gar nicht funktionieren. deine Bedingen heißt "laufe solange zahl kleiner oder gleich Ende ist". Da Ende aber 0 ist, geht die Schleife nur, wenn zahl negativ ist. In der Schleife verkleinerst du aber immer zahl, d.h. eine negative Zahl wird noch kleiner

Ergo bei Zahlen >= 0 wird die Schleife nie betreten, bei Zahlen < 0 hast du eine endlosschleife
 
F

Filip

Gast
Code:
/** Übung 2d: */

public class Hauptprogramm2d  {

 	/** Hauptprogramm */
	public static void main(String args[]) {
		short Zeile = Short.parseShort(args[0]); 
		short Anzahl_Zeichen = Short.parseShort(args[1]);
		
		while (Zeile > 0 ) {
		System.out.println("$");
		Zeile--;
			while (Anzahl_Zeichen > 1) {
			System.out.print("$");
			Anzahl_Zeichen--; }  }
		

				
	}// main

}// class Hauptprogramm2d


Aufgabe wir folgt:
2 Variabeln

1. Variabl x 2. Varibal soll die Anzahl der Dollar Zeichen ergeben, die dann auch so dargestellt werden sollen.

Bsp.: Zeile 3 Anzahl_Zeichen 5

$$$$$
$$$$$
$$$$$

Wenn ich es nun starte, dann sieht es schon fast so aus, aber halt nicht wie es verlangt wird. Wo liegt mein Fehler
 

Oni

Top Contributor
Das problem ist das du in der zweiten schleife den wert veringerst. wenn du dann zum zweitenmal zur schleife kommst ist der wert immernoch 1.

also das war dein code:

wert1 = 5
wert2 = 5
wert2 = 4
wert2 = 3
wert2 = 2
wert2 = 1

wert1 = 4
wert2 = 1

wert1 = 3
wert2 = 1

usw..



Code:
public class Hauptprogramm2d  {

   /** Hauptprogramm */
   public static void main(String args[]) {
      short Zeile = Short.parseShort(args[0]);
      short Anzahl_Zeichen = Short.parseShort(args[1]);

      short safe = Anzahl_Zeichen;

      while (Zeile > 0 ) {
      Anzahl_Zeichen = safe;

      Zeile--;
         while (Anzahl_Zeichen > 1) {
         System.out.print("$");
         Anzahl_Zeichen--; }
     System.out.println("$");
     }
   }

}
 

fisch

Aktives Mitglied
hm ich versteh die Aufgabe nicht ganz, willst du das die 5 Dollarzeichen dann nur einmal ausgegeben werden oder??
 

Oni

Top Contributor
er möchte die anzahl der zeilen und die anzahl der $ zeichen angeben können.

bei 3 zeilen
und
5 $ zeichen

soll die ausgabe dann so aussehen:
Code:
$$$$$
$$$$$
$$$$$
 

Oni

Top Contributor
safe dient als zwischenspeicher und soll die eingabe des benutzers speichern.

in der ersten schleife wird Anzahl_zeichen dann immer wieder auf seinen alten wert gesetzt.

Anzahl_Zeichen = safe;
 

Oni

Top Contributor
wollte dir damit nur verdeutlichen, das du die Anzahl_Zeichen immer wieder auf seinen alten wert setzen muss nach dem du ihn in deiner zweiten schleife auf 1 herunter gezählt hast.

du könntest es aber auch so machen:

Code:
public class Hauptprogramm2d  {

   /** Hauptprogramm */
   public static void main(String args[]) {
      short Zeile = Short.parseShort(args[0]);
      short Anzahl_Zeichen;

      while (Zeile > 0 ) {
      Anzahl_Zeichen = Short.parseShort(args[1]);

      Zeile--;
         while (Anzahl_Zeichen > 1) {
         System.out.print("$");
         Anzahl_Zeichen--; }
     System.out.println("$");
     }
   }

}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben