Професионална програма
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
QniMihailov avatar QniMihailov 0 Точки

Дори и с твоето изкарва 20/100 ? Да не би да има някакъв бъг в judge.

Ето това ми дава като грешка: 

https://imgur.com/a/xTeDo

0
Zhivko01 avatar Zhivko01 2 Точки

Пробвай така

System.out.printf(“%.0f”,area);
        System.out.printf(“%.0f”,perimeter);
    }
}
0
13/03/2018 13:30:44
QniMihailov avatar QniMihailov 0 Точки

По този начин, не се изпълнява условието,където иска плаваща запетая.

0