Я работаю над циклами Java для назначения. Мне пришлось написать цикл, который начинается с численности населения трех стран, поднимает / понижает каждую из них до тех пор, пока одна страна не станет ниже, чем две другие, и печатает данные о населении и о годах, которые потребовались для достижения этого результата.
Я использую два условия с правильным кодом, но когда условия правильные, они не работают правильно. Цикл должен работать до тех пор, пока население Мексики и Японии не превысит население США, поэтому я работаю с этим:
Если я использую это условие - mexpop> usapop && jappop> usapop, цикл не запускается, потому что США уже выше, чем Мексика и Япония (315 000 000 против 121 000 000 и 127 000 000).
Если я использую это условие - mexpop
Последний вариант, который я попробовал: usapop
Ожидаемый результат должен быть очевиден, но вот что я получаю:
Население Мексики составляет 273 286 490 человек. Население Соединенных Штатов составляет 278 014 339 человек. Население Японии составляет 278 115 163 человек. Это изменение заняло 78 лет.
Я думаю, что популярность в Японии выше благодаря чистой удаче, но, похоже, она не отвечает обоим условиям, даже если я использую логический оператор AND.
/* Import Java utilities required for the program. */
import java.text.DecimalFormat;
class Population_for {
public static void main(String[] args) {
/** Declare variables that will be used in the program. **/
double usapop, mexpop, jappop;
int years;
/** This is the start of the for loop.
* The first line declares the variables (mexpop, usapop, jappop), the second line declares the conditions (mexpop less than**/
for(mexpop=121000000, usapop=315000000, jappop=127000000, years=1; mexpop < usapop && jappop < usapop; years++){
mexpop = mexpop * 1.0105;
usapop = usapop * 0.9984;
jappop = jappop * 1.0101;
DecimalFormat df = new DecimalFormat("###,###,###");
System.out.println("The Mexican population is "+(df.format(mexpop))+". The United States population is "+(df.format(usapop))+". The Japanese population is "+(df.format(jappop))+". This change took "+years+" year(s).");
System.out.println("");
}
}
}```