2016-10-18 3 views
0

Im пытается написать программу, чтобы суммировать каждую цифру каждого четырехзначного числа. Например, я начинаю с 1000 и однажды добавляется 1001, тысячи становятся 2, сотни становятся 0, десятки становятся 0, а единицы становятся равными 1. Это должно продолжать добавлять каждое число до тех пор, пока оно не достигнет 9999. Это мой код, он просто выводит 9999.Do while loops (Java)

int num = 1000, unit = 0, ten = 0, hundred = 0, thousand = 0, newNum = 0, sumth = 0, sumh = 0, sumten = 0, sumu = 0; 

while (num <= 9999) 
{ 
    unit = num%10; 
    newNum = num/10; 
    ten = newNum%10; 
    newNum=newNum/10; 
    hundred = newNum%10; 
    thousand = newNum/10; 
    num++; 
} 
sumth = thousand + sumth; 
sumh = hundred + sumh; 
sumten = ten + sumten; 
sumu = unit + sumu; 

System.out.println(sumth + " " + sumh + " " + sumten + " " + sumu); 
+1

В чем вопрос? Что вы ожидаете от вывода? – JJF

+0

Что-то вроде: сумма единиц составляет 5 Сумма десятков составляет 10 Сумма сотни составляет 6 Сумма тысяч составляет 7 , но я просто все это на одной строке на текущий –

+0

Когда вас выполните этот шаг в отладчике, где/как конкретно наблюдается наблюдаемое поведение от того, что вы ожидаете? – David

ответ

0

Она должна быть смещена внутрь while loop

while (num <= 9999) 
    { 
     unit = num%10; 
     newNum = num/10; 
     ten = newNum%10; 
     newNum=newNum/10; 
     hundred = newNum%10; 
     thousand = newNum/10; 

     sumth = thousand + sumth; 
     sumh = hundred + sumh; 
     sumten = ten + sumten; 
     sumu = unit + sumu 
     num++;  

    } 


Выход: 45000 40500 40500 40500
Работа ссылка: https://ideone.com/WrAX8D

+0

Это делает их одинаковыми. –

+0

например. если у меня есть 1000, 1001, 1002, 1003, 1004, 1005 сумма тысяч равна 6, сумма сотен равна 0, сумма десятков равна 0, сумма единиц равна 15 ... надеюсь, что имеет смысл –

1

это Уборка вверх мало для читаемости:

int num = 1000, 
    sumThousands = 0, 
    sumHundreds = 0, 
    sumTens = 0, 
    sumUnits = 0; 

    while (num <= 9999) 
    { 
     int units = num % 10; 
     int tens = (num/10) % 10; 
     int hundreds = (num/100) % 10; 
     int thousands = (num/1000) % 10; 

     sumUnits += units; 
     sumTens += tens; 
     sumHundreds += hundreds; 
     sumThousands += thousands; 

     num++; 
    } 

System.out.println(sumThousands + " " + sumHundreds + " " + sumTens + " " + sumUnits); 

Выход вы получаете:

45000 40500 40500 40500 

Это, как ожидается. Для последовательности целых чисел 1000..9999:

  • В столбце тысячи, каждая цифра 1..9 повторяется 1000 раз
    • Так сумма тысяч является 1000(9+8+7+6+5+4+3+2+1) = 1000(9(10)/2) = 45000
  • В каждом другой столбец, каждая цифра 0..9 повторяется 900 раз
    • Таким образом, суммы для других столбцов 900(9+8+7+6+5+4+3+2+1) = 900(9(10)/2) = 40500