2015-12-09 3 views
1

Как бы отформатировать это, чтобы он не показывал десятичных точек после того, как были рассчитаны мили в час? Я понятия не имею, как отформатировать это вообще. В настоящее время я получаю то, что он округляется, но после этого он оставляет .0, и он просто выглядит не так. Я также должен держать его как double.Отрезание десятичной точки

import java.util.Scanner; 
import static java.lang.System.*; 
import static java.lang.Math.*; 

public class MilesPerHour { 
    private int distance, hours, minutes; 
    private double mph; 

    public MilesPerHour() { 
    setNums(0,0,0); 
    mph = 0; 
    } 

    public MilesPerHour(int dist, int hrs, int mins) { 
    distance = dist; 
    hours = hrs; 
    minutes = mins; 
    } 

    public void setNums(int dist, int hrs, int mins) { 

    } 

    public void calcMPH() { 
    mph = Math.round((distance)/(hours + (minutes/60))); 
    } 

    public void print() { 
    System.out.print(distance + " miles in " + hours + " hours and " + minutes + " minutes = " + mph + " MPH."); 
    } 

    public static void main(String[] args) { 
    Scanner keyboard = new Scanner(in); 
    out.print("Enter the distance :: "); 
    int dist = keyboard.nextInt(); 
    out.print("Enter the hours :: "); 
    int hrs = keyboard.nextInt(); 

    out.print("Enter the minutes :: "); 
    int mins = keyboard.nextInt(); 

    MilesPerHour test = new MilesPerHour(dist, hrs, mins); 
    test.calcMPH(); 
    test.print(); 
    } 
} 
+0

приведение его в междунар. – DBug

+0

двойной будет отображаться .0 когда преобразован в строку. Таким образом, вы можете использовать его как int 'System.out.print (расстояние +« мили »в« + часы + »часы и« + минуты + »минуты =« + ((int) mph) + «MPH.»); ' – user3162662

ответ

2

Вы можете использовать String.format(), чтобы отобразить ваш двойной округлой как целое:

System.out.println("My number: " + String.format("%.0f", 2.5d)); 

покажет My number: 3.

Обратитесь к full documentation за синтаксисом форматирования строк.

+1

Вы можете использовать это или хотите, вы можете использовать [DecimalFormat] (http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html) – liquidsystem

+0

Возможно, он использует 'Math .round() 'для значения, а не только при его отображении. –

1

Из кода:

private double mph; 

mph останется double даже вы назначили Math.round(), возвращаемого значения к нему. И когда вы вызываете System.out.print(), mph получил ссылку как double, что привело к завершающему «.0».

Просто добавьте тип литья, как это будет делать:

System.out.print(" MPH: " + ((int)mph)); 
Смежные вопросы