Площадь треугольника по трём сторонам


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		double[] numerec = new double[(int) 3];
		System.out.println("В ведите три стороны треугольника!");			
		for (int i = 0 ; i < numerec.length; i++) {
			System.out.println("Сторона №"+(i+1));			
			Scanner sc=new Scanner(System.in);
			numerec[i] = (double)(sc.nextDouble());
		}

		double summ = (numerec[0] + numerec[1] + numerec[2])/2;
		double ploch = Math.sqrt(summ*(summ-numerec[0])*(summ-numerec[1])*(summ-numerec[2])) ;
		System.out.println("Площадь треугольника равна "+ploch+".");			
	}
}

хм… а в Java может быть переполнение? Получаемый инт ты записываешь в массив char?
А если человек захочет сторону 0.3?

1 симпатия

Исправил недочёт)). Спасибо за подсказку.

А зачем же на каждой итерации цикла создавать новый Scanner?? Не проще ли один раз его создать перед циклом?
И зачем нужно вот это преобразование типов??

			numerec[i] = (double)(sc.nextDouble());

В остальном решение верное

Исправил решение.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		double[] numerec = new double[(int) 3];
		Scanner sc = new Scanner(System.in);
		System.out.println("В ведите три стороны треугольника!");
		for (int i = 0; i < numerec.length; i++) {
			System.out.println("Сторона №" + (i + 1));
			while (!sc.hasNextDouble()) {
				System.out.println("Это не число");
				sc.next();
			}
			numerec[i] = sc.nextDouble();
		}

		if (numerec[0] > 0 && numerec[1] > 0 && numerec[2] > 0) {
			double summ = (numerec[0] + numerec[1] + numerec[2]) / 2;
			double ploch = Math.sqrt(summ * (summ - numerec[0]) * (summ - numerec[1]) * (summ - numerec[2]));
			System.out.println("Площадь треугольника равна " + ploch + ".");
		} else {
			System.out.println("Не может быть отрицательных сторон в треугольнике.");
		}
	}
}

Предложенное вами решение верно