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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.