2013-12-24 5 views
0

Я просто медленно изучаю Java, и у меня возникают проблемы с одним из упражнений. Программа предназначена для ввода пользователем любого количества минут (я использую пример 1000000000), и тогда программа найдет общее количество оставшихся лет и дней. По какой-то причине я могу получить правильное количество лет в 19 лет, но моя логика в последнем заявлении неверна, и я не получаю 214 дней.Ошибка логики в моей программе Java

Ниже приведен мой код программы, и если вы можете заставить меня понять, почему я не вижу правильного ответа, пожалуйста, дайте мне знать. Кроме того, я не знаю, ошибочна ли книга, но фактическое количество лет, которое она показывает, составляет 1902 год, но получение 1902 года является невозможным, учитывая только 1 миллиард минут. Это тоже путаница. Спасибо за все ответы заранее.

import java.util.Scanner; 

public class NumberOFYears 
{ 
    public static void main(String[] args) 
    { 
     //Create a Scanner object 
     Scanner input = new Scanner(System.in); 

     //Prompt user for input 
     System.out.print("Please enter number of minutes:"); 
     int totalMinutes = input.nextInt(); 

     //Find the number of hours 
     int totalHours = totalMinutes/60; 

     //Find the number of days 
     int totalDays = totalHours/24; 

     //Find the number of years 
     int totalYears = totalDays/365; 

     //Find the number of days left 
     int remainingDays = totalHours % 24; 
     System.out.println(remainingDays); 

    } 
} 
+0

количество лет и дней осталось ... до чего? –

+1

Кстати, у вас всего 10 миллионов минут, а не 1 миллиард –

+0

@MattBall жаль, что не уточнил лучше. За 1 миллиард минут, сколько лет и дней? – user2522055

ответ

4

Вы подсчитывают оставшиеся дни, поэтому используйте:

int remainingDays = totalDays % 365; 
+0

Это сработало! Спасибо! – user2522055

+0

Если какой-либо ответ работает, примите это как ответ. –

2

Вы можете использовать

int remainingDays = totalDays%365; 

вместо этого. % Является оператором модуля, который возвращает остаток меньше, чем правый операнд

+0

Это сработало спасибо! – user2522055

3

После того, как вы знаете, целый ряд лет, вы вычислить остальные дни, как

remainingDays = totalDays - 365 * totalYears; 

Вы можете также использовать оператор по модулю. Конечно, ваш простой код игнорирует високосными ...

Кстати, 1,000,000,000/(60 * 24 * 365) действительно 1902 и

1,000,000,000/(60 * 24) - 365 * 1902 = 214 
+0

Да, это было очень простое упражнение. Возможно, причиной получения 19 вместо 1902 года было то, что я вводил неправильное количество нулей. Спасибо @Floris за объяснение. – user2522055

Смежные вопросы