2016-06-04 22 views
1

Versuchen, ein Programm zu erstellen, das alle ungeraden Zahlen zwischen 1 und 100 zusammensummiert, zeigt es an, zeigt dann den Durchschnitt. Ich kann nicht herausfinden, warum die Schleife früh abschneidet. Super auch neu dazu, so wenden Sie sich bitte gehen Sie einfach: pProgramm, das summiert alle ungeraden Zahlen zwischen 1 und 100

int sum = 0; 
double average; 
double lowerbound = 1; 
double upperbound = 100; 
double number = lowerbound; 
double remainder = 1; 

//loop 
    while(number<= upperbound) 
     if (remainder == 1){ 
      sum += number; 
      remainder = number%2; 
      System.out.println(number); 
      number++; 
     }else{ 
      number++; 
    } 


average = sum/upperbound; 

System.out.println(); 
System.out.println ("These are your sums and averages"); 

System.out.println (sum); 
System.out.println (average); 

}

+1

Sie sollten den Rest der aktuellen Nummer finden. Hier überprüfen Sie den Rest der vorherigen Nummer. Sobald der Rest 0 wird, endet die Schleife einfach, weil keine weiteren Änderungen vorgenommen werden. – Kajal

Antwort

0

Das Hauptproblem ist der Rest Teil. Sie sollten es direkt berechnen :

while(number <= upperbound){ 
    if (number % 2 == 1){ 
     sum += number; 
     System.out.println(number); 
    } 
    number++; 
} 

Was mit Ihrem Code geschieht, ist: remainder beginnt als 1. Auf der ersten Schleife number auch 1. ist also geben Sie den if Fall und Sie berechnen die neue remainder was wird 1%2 = 1 sein. Also im nächsten Durchlauf Sie Rest aktualisieren

remainder = 2%2 = 0`. //number = 2 

jedoch sein, da Ihre remainder Variable jetzt auf 0 gesetzt ist, werden Sie nie wieder den if Fall eintreten und daher nie Ihre remainder aktualisieren. (Also die Schleife endet nicht jeder früher, man muss nur das Everthing überspringen innerhalb davon)

Beachten Sie auch, dass Sie die else Fall nicht benötigen, da Sie number in steigen sowohl die if und die else

+0

keiwan, du Herr bist erstaunlich –

0

Sie müssen den Rest für jeden Wert überprüfen, den Sie berechnen.

public static void main(String[] args) { 
    int sum = 0; 
    double average; 
    double lowerbound = 1; 
    double upperbound = 100; 
    double number = lowerbound; 
    //double remainder = 1; 

    //loop 
    while(number<= upperbound) 
     if (number%2==1){ 
      sum += number; 
      //remainder = number%2; 
      System.out.println(number); 
      number++; 
     }else{ 
      number++; 
     } 


    average = sum/upperbound; 

    System.out.println(); 
    System.out.println ("These are your sums and averages"); 

    System.out.println (sum); 
    System.out.println (average); 
} 
Verwandte Themen