Професионална програма
Loading...
QniMihailov avatar QniMihailov 0 Точки

2D Rectangle Area - java

Здравейте, става въпрос за тази задача: https://judge.softuni.bg/Contests/Practice/Index/649#6

Правоъгълник е зададен с координатите на два от своите два срещуположни ъгъла. Да се пресметнат площта и периметъра му:

 

Ето това е моят код,който работи, но като го въведа в judge ми дава само 20 точки.

import java.util.Scanner;

public class main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double x1 = Double.parseDouble(scanner.nextLine());
        double y1 = Double.parseDouble(scanner.nextLine());
        double x2 = Double.parseDouble(scanner.nextLine());
        double y2 = Double.parseDouble(scanner.nextLine());

        double width = Math.abs(x1 - x2);
        double height = Math.abs(y1 - y2);
        double area = width * height;
        double perimeter = 2 * (width + height);
        System.out.println(area);
        System.out.println(perimeter);
    }
}
0
Programming Basics with Java
efect77 avatar efect77 27 Точки
Best Answer

Разликата идва от там, че в тестовете са нагласени да чакат отговор със закръгляне - ако е нула след десетичната запетая - да се отпечатва цяло число (в първия пример, без това закръгляне ти се отпечатва 1500.0 и 160.0, а трябва да е 1500 и 160). Ако обаче не е 0, да се отпечатат числата след десетичната запетая

Това може да се направи с Decimal format, който си го импортваш.

 

import java.text.DecimalFormat;
import java.util.Scanner;

public class P06_SquareOfStars {
    public static void main(String[] args) {

        DecimalFormat df = new DecimalFormat("#.####");
        Scanner scanner = new Scanner(System.in);
        
        double x1 = Double.parseDouble(scanner.nextLine());
        double y1 = Double.parseDouble(scanner.nextLine());
        double x2 = Double.parseDouble(scanner.nextLine());
        double y2 = Double.parseDouble(scanner.nextLine());

        double width = Math.abs(x1 - x2);
        double height = Math.abs(y1 - y2);
        double area = width * height;
        double perimeter = 2 * (width + height);

        System.out.println(df.format(area));
        System.out.println(df.format(perimeter));
    }
}

https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

0
13/03/2018 23:12:09