Organização de saídas

Boa noite!
Fiz o seguinte programa:

import java.util.Scanner;

public class areaTrianguloRetangulo {

public static void main(String[] args) {
	// TODO Auto-generated method stub
Scanner entrada = new Scanner(System.in);
System.out.println ("qual o valor da base?");
String base = entrada.next().replace(",", ".");
Double base1 = Double.parseDouble(base);
System.err.printf("%f -> %.2f", base1, base1);


System.out.println ("qual o valor da altura?");
String altura = entrada.next().replace(",", ".");
Double altura1 = Double.parseDouble(altura);
System.err.printf("%f -> %.2f",  altura1, altura1);

double resultado = (base1 * altura1)/2;
System.out.println(resultado);

entrada.close();

}

}

O programa funciona, porém a resposta fica toda bagunçada, exemplo:
(Os que estão em negrito são os valores de entrada)

qual o valor da base?
2
qual o valor da altura?
2,000000 -> 2,008
8,000000 -> 8,008.0

Como consigo arrumar? Já tentei muitas formas fuçando no código, mas não saio do lugar.

Ao invés de next utilize nextLine e põe um %n nos seus printf para fazer a quebra de linha antes de ler uma nova entrada.

Obrigado pela resposta, porém não consegui resolver.
Coloquei os comandos conforme você falou e também coloquei “\n” nas perguntas das entradas.

O código ficou assim:

import java.util.Scanner;

public class areaTrianguloRetangulo {

public static void main(String[] args) {
	// TODO Auto-generated method stub
Scanner entrada = new Scanner(System.in);
System.out.println ("qual o valor da base?");
String base = entrada.nextLine().replace(",", ".");
Double base1 = Double.parseDouble(base);
System.err.printf("%n %f -> %.2f", base1, base1);


System.out.println ("\n qual o valor da altura?");
String altura = entrada.nextLine().replace(",", ".");
Double altura1 = Double.parseDouble(altura);
System.err.printf("%n %f -> %.2f",  altura1, altura1);

double resultado = (base1 * altura1)/2;
System.out.println("\n" + resultado);

entrada.close();

}

}

Quanto mais eu tento arrumar, mais confuso fica.

A ideia era pôr o %n no final das suas String e não no início.

Você colocou vários \n nos println, isso faz com que ele pule mais linhas do que gostaria (se entendi bem, afinal, vc não diz exatamente como deveria ser a saída - quantas linhas é pra pular em cada caso, etc).

Bom, pra ajudar, lembre-se de alguns detalhes:

  • println adiciona uma quebra de linha no final
  • cada \n pula uma linha (além da linha que println já adicionará automaticamente)
  • printf não adiciona a quebra de linha, então vc tem que colocar explicitamente \n ou %n (a diferença é que %n usa a quebra de linha específica do sistema operacional, ou seja, \n no Linux, \r\n no Windows, etc)

Assim você pode organizar melhor a saída (a impressão que tive ao ler o tópico é que vc saiu colocando \n e %n aleatoriamente sem entender muito bem o que está acontecendo).

Sendo assim, ficaria (baseado no que acho que é o que vc quer):

Scanner entrada = new Scanner(System.in);

System.out.println("qual o valor da base?");
Double base = Double.parseDouble(entrada.nextLine().replace(",", "."));
System.err.printf("%f -> %.2f%n", base, base);

System.out.println("qual o valor da altura?");
Double altura = Double.parseDouble(entrada.nextLine().replace(",", "."));
System.err.printf("%f -> %.2f%n", altura, altura);

// se só vai imprimir o resultado e não vai usar pra mais nada depois, nem precisa de variável
System.out.println((base * altura) / 2);

Exemplo de saída:

qual o valor da base?
3,5
3.500000 -> 3.50
qual o valor da altura?
5,7
5.700000 -> 5.70
9.975

Vale lembrar também que não é pra fechar o System.in. Claro que pra programa simples como esse não faz diferença, mas enfim…