Como converter fazer para converter a "," digitada pelo usuario para que não de erro?

Bem galera, na hora que eu executo, aí vou digitar um valor com “,” por exemplo: 9,75, da erro. Como eu corrigo este erro? Ah e outra pergunta como é que eu faço para mostrar apenas dois valores apos a virgula. Ah vale lembra que estou fazendo com o tipo de dados float. Peguei o text field da paleta do netbeans, e converti para float. VLW! Obrigado!

Bem, o Fórum está cheio das mesmas respostas. Eu mesmo já postei essa resposta. Aqui vai

http://www.guj.com.br/java/249701-android---decimalformat#1296603

da erro pq que não é virgula, e sim ponto. se vc quiser substituir use o replaceAll.

vc quer mostrar em que?

float a=(float) 15.0023;
txtNome.setText(String.format ("%.2f",a));//em JTextField

System.out.printf("%.2f",a);//console

Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.

Independente de onde for usar, vai de NumberFormat que tá tranquilo.

NumberFormat instance = DecimalFormat.getInstance(new Locale("pt", "BR"));
		instance.setMaximumFractionDigits(2);
		
		Double dValue;
		try {
			dValue = (Double) instance.parse("9,7000");
			System.out.println(dValue);
			NumberFormat nf = new DecimalFormat( "#.00" );
			System.out.println(nf.format(dValue));
		} catch (ParseException e) {
			e.printStackTrace();
		}

Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.

Independente de onde for usar, vai de NumberFormat que tá tranquilo.

[code]
NumberFormat instance = DecimalFormat.getInstance(new Locale(“pt”, “BR”));
instance.setMaximumFractionDigits(2);

	Double dValue;
	try {
		dValue = (Double) instance.parse("9,7000");
		System.out.println(dValue);
		NumberFormat nf = new DecimalFormat( "#.00" );
		System.out.println(nf.format(dValue));
	} catch (ParseException e) {
		e.printStackTrace();
	}

[/code][/quote]

Cara, ta aqui a parte do código ao que me refiro.

        double t1 = Float.parseFloat(Nota1.getText());     
        double t2 = Float.parseFloat(Nota2.getText());       
        double t3 = Float.parseFloat(Nota3.getText());
        double t4 = Float.parseFloat(Nota4.getText());
        double m = (t1+t2+t3+t4)/4;     
        
        Media.setText("" + m); 

Está aí, são textfield, e foram criados a partir da paleta do netbeans.
E aí, como devo fazer para, mostrar apenas dois depois da virgula? E caso o usuário coloque uma virgula, não de erro?
VlW! Obrigado!

Não, usar replaceAll é gambiarra pura. O correto é usar NumberFormat ou DecimalFormat, com os locales corretos.

Independente de onde for usar, vai de NumberFormat que tá tranquilo.

[code]
NumberFormat instance = DecimalFormat.getInstance(new Locale(“pt”, “BR”));
instance.setMaximumFractionDigits(2);

	Double dValue;
	try {
		dValue = (Double) instance.parse("9,7000");
		System.out.println(dValue);
		NumberFormat nf = new DecimalFormat( "#.00" );
		System.out.println(nf.format(dValue));
	} catch (ParseException e) {
		e.printStackTrace();
	}

[/code][/quote]

gambiarra… gambiarra pq, se eu posso fazer isso direto no textfield e passar o valor pronto para double?
sem falar do processamento com um comando, uma linha é possível fazer o que em 4.

Pq é gambiarra oras!!!

Se o cara inputar 1.279,00, com replaceAll vai funcionar? com DecimalFormat funciona sem alterar uma linha.

galera, por favor ajudem-me. Agradeço por terem colocado códigos, mas e aí, estes códigos eu devo colocar ou não? Como eu faço isso pelo netbeans(para utilizar no textfield “arrastado” da paleta)?

[quote=ruivo][quote=yhhik]

gambiarra… gambiarra pq, se eu posso fazer isso direto no textfield e passar o valor pronto para double?
sem falar do processamento com um comando, uma linha é possível fazer o que em 4.

[/quote]

Pq é gambiarra oras!!!

Se o cara inputar 1.279,00, com replaceAll vai funcionar? com DecimalFormat funciona sem alterar uma linha.[/quote]

kkkkkkkkkkkkkkk
gambiarra pq o professor disse né…
ta certo, se for pensar na exceção para esse caso DecimalFormat é a melhor o opção, mas replaceAll nao deve ser encarado como gambiarra, vai haver casos que ele será a melhor opção.

cara já foi postado duas maneiras diferentes de se resolver isso e de se mostrar 2 casas depois do ponto flutuante… escolha a que vc acha mais adequada e adapte as suas necessidades.

[quote=yhhik]
kkkkkkkkkkkkkkk
gambiarra pq o professor disse né…
ta certo, se for pensar na exceção para esse caso DecimalFormat é a melhor o opção, mas replaceAll nao deve ser encarado como gambiarra, vai haver casos que ele será a melhor opção.[/quote]

Não, gambiarra pq mais de 6 anos desenvolvendo em java profissionalmente (uns 8, se contar a academia) te dão certa experiência para dizer isso com alguma propriedade.

sim cara…só estou dizendo que vc está generalizando, como eu disse antes nesse caso se levar em conta a exceção
o DecimalFormat é a melhor opção, mas vai haver casos em que usar o replaceAll será a melhor opção.

Que fique claro que não quero tomar as dores de ninguem, mais quando o Replace all e a melhor opção em questoes aritméticas ?

não falo somente de questões aritméticas, o objetivo era trocar uma virgula por um ponto, eu disse que era melhor fazer isso direto na String que o textField retorna usando o replaceAll e entregar o valor correto em float.
mas acho que o colega Ruivo generalizou a dizer que replaceAll é uma gambiarra… não disse que o replace pode ser melhor em questões aritméticas.

[quote=yhhik]não falo somente de questões aritméticas, o objetivo era trocar uma virgula por um ponto, eu disse que era melhor fazer isso direto na String que o textField retorna usando o replaceAll e entregar o valor correto em float.
mas acho que o colega Ruivo generalizou a dizer que replaceAll é uma gambiarra… não disse que o replace pode ser melhor em questões aritméticas.
[/quote]

Tá, vamos esclarecer então. Ninguém está errado nessa história. Quando eu disse que usar replaceAll era gambiarra, era nesse contexto de, a partir de uma string, vc transformá-la em um number (double, integer, float, whatever…) Tanto é que a alternativa que sempre apontei foi usar o DecimalFormat.

Agora, se vc quer substituir algo da string e o resultado é outra string, oras, use replaceAll e seja feliz.

Entretanto, contudo, todavia, continuo afirmando que, usar replaceAll para transformar string em números, NESSE CASO, é sim gambiarra pura.