Erste Schritte while Schleife Anweisungen

S

Stefani001

Gast
Hallo,
ich versuche gerade diese Aufgabe zu lösen:

HTML:
Schreiben Sie ein Programm, das den Anwender nach einem Start- und Endwert fragt und dann alle Zahlen (Integer) inklusive der eingegebenen ausgibt.
Dazu habe ich dieses Programmstrück geschrieben. Irgendwie funktinert es nicht :-(


Java:
import java.util.Scanner;


public class ZahlenDifferenzen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int startZahl, endZahl, zaehler = 1;
		
		
		Scanner sc=new Scanner(System.in);
		
		
		 System.out.println( "Start Zahl:  " );
		 startZahl = sc.nextInt();
	     System.out.println( "End Zahl : " );
	      endZahl = sc.nextInt();
		
	      
	  
	    
	      while ( startZahl==endZahl )             
	      {
	        System.out.println( "Zaehler ist:" + zaehler );
	        zaehler = zaehler + 1;            // zaehler um eins erhöhen
	      }
	      System.out.println( "Schleife beendet" );
	    }
	  
	    	  
	      }
 

Fab1

Top Contributor
Es ist von Vorteil, wenn du sagst was nicht funktioniert. Es kommt ja sicherlich eine Fehlermeldung oder?

Außerdem erstellt du da eine Endlosschleife ;)
 

Fab1

Top Contributor
Nur wenn du zwei Zahlen eingibst, die nicht gleich sind. Wenn du z.B. 2 und 2 eingibst, dann erhältst du eine Endlosschleife.
 
S

stefani001

Gast
ja, wenn die werte endZahl und startZahl gleich sind, dann kommt in einer endlosenn Schleife rein
 

Fab1

Top Contributor
Genau so ist es. Und nun?

Weißt du was der Aufgabensteller mit
Code:
alle Zahlen (Integer) inklusive der eingegebenen ausgibt.
meint? Alle natürlichen Zahlen wären ja wohl zu viel. ;)
 
N

nillehammer

Gast
Code:
[B]While[/B]
heißt auf Deutsch solange. Auf Deutsch übersetzt hättest Du Deinem Programm also gesagt: "Solange startZahl gleich endZahl, mache was." Ist es aber nicht eher so, dass solange was gemacht werden soll wie startZahl kleiner-gleich endZahl ist?

Davon mal abesehen ist die Ausgabe von zaehler nicht korrekt. Das Programm soll die Werte zwischen den beiden eingegebenen Zahlen (inklusive) ausgeben und nicht, die Nummer des aktuellen Schleifendurchlaufs.
 
S

stefani001

Gast
ja, z.b. wenn startZahl 5 und endZahl 10 ist
dann wird wie folt ausgegeben:
6
7
8
9
10
 
N

nillehammer

Gast
ja, z.b. wenn startZahl 5 und endZahl 10 ist
dann wird wie folt ausgegeben:
6
7
8
9
10
Gut, dann hast Du es ja fast. Lies Dir jetzt nochmal die Aufgabe genau durch: "[...](Integer) inklusive der eingegebenen ausgibt." D.h. die 5 müsste noch mit ausgegeben werden und Du bist fertig.
 
S

stefani001

Gast
vielen Dank hat sich erledigt.

Java:
    //  while (startZahl == 10)
	    	//  System.out.println( "Zaehler ist:" + startZahl+1);
	      
	                        // zaehler mit eins initialisieren
	      while ( startZahl<=endZahl )              // mache solange zaehler <= 3
	      {
	        System.out.println( "Zaehler ist:" + startZahl );
	        //zaehler = zaehler + 1;  
	        
	        startZahl= startZahl+1;
	        // zaehler um eins erhöhen
	      }
	      System.out.println( "Schleife beendet" );
	    }
	  
	    	  
	      }
 
S

stefani001

Gast
Ein kleines Problem nun, wenn ich die Werte 5 und 10 eingebe, bekomme ich diese zurück:
int startZahle =1;

Zaehler ist:5
Zaehler ist:6
Zaehler ist:7
Zaehler ist:8
Zaehler ist:9
Zaehler ist:10
Schleife beendet

Warum ich würde gerne so haben, dass das Programm bei 6 beginnt, wenn ich 5 eingebe.
Danke
 

Kamo

Neues Mitglied
vorne weg, ich bin auch nur ein blutiger Anfänger
aber wenn du die Ausgabe des startwerts+1 haben möchtest dann musst du nachdem Einlesen
der Startzahl diese um 1 erhöhen also

Java:
startZahl = sc.nextInt();
startZahl++;
 

Fab1

Top Contributor
Es sollte auch reichen, wenn du zwei Zeilen von deinem bisherigen Code vertauschst. Aber warum willst du das machen? Die Aufgabe beschreibt in meinen Augen die andere Lösung.

Java:
//  while (startZahl == 10)
            //  System.out.println( "Zaehler ist:" + startZahl+1);
          
                            // zaehler mit eins initialisieren
          while ( startZahl<=endZahl )              // mache solange zaehler <= 3
          {
            startZahl= startZahl+1;
            //zaehler = zaehler + 1;  
             System.out.println( "Zaehler ist:" + startZahl );
           
            // zaehler um eins erhöhen
          }
          System.out.println( "Schleife beendet" );
        }
            
          }

Somit wird erst die Startzahl erhöht und erst dann ausgegeben.
 

Neue Themen


Oben