Double.parseDouble

Companheiros,

estou tentando transformar uma string em um double com o codigo abaixo:

String str3 = valorpretendido.getString();
f = 0;
f = Double.parseDouble(str3);

mas quando mando compilar ele apresenta o sequinte erro:

C:\WTK25\apps\ProjetoWill\src\ProjetoWill.java:160: cannot find symbol
symbol : variable Double
location: class ProjetoWill
f = Double.parseDouble(str3);
^
O que ta errado???

Muitas vezes o compilador se confunde e dá a mensagem errada. Por acaso você declarou a variável f?

 String str3 = valorpretendido.getString();
double f = 0;
f = Double.parseDouble(str3); 

Declaraste f em algum lugar ou somente colocou-o ali?
Eu acho que o correto seria:

String str3 = valorpretendido.getString(); double f = 0; f = Double.parseDouble(str3);

Obs.: Utilize a tag CODE quando for colocar código.

Até!

A variável f foi declarada sim, no construtor.

Coloque o código inteiro então para poder haver uma análise mais apurada.

Até!

La vai o codigo.

[code]
import javax.microedition.lcdui.;
import javax.microedition.midlet.
;
import java.lang.Math;

public class ProjetoWill extends MIDlet implements CommandListener
{
Display tela;
Form login, resultado;
TextField periodo, valordepositado, valorpretendido;
StringItem resultadoMsg;
Command sair, proximo;
String teste, teste2;
int n, varValor1, varValor2, varResult;
double p, f;
double result1, result2, result3, result4;

public ProjetoWill()
{

	// inicializar Commands

	this.sair = new Command("Sair", Command.EXIT, 0);
	this.proximo = new Command("Prox", Command.SCREEN, 1);

	// form de login
	this.login = new Form("Login");
	this.periodo = new TextField("periodo:", "", 20, TextField.ANY);
	
	this.valordepositado = new TextField("valordepositado:", "", 20, TextField.ANY);// | TextField.PASSWORD);

	this.valorpretendido = new TextField("valorpretendido:", "", 20, TextField.ANY);

	//adiciona-se os componentes ao Form Login
	this.login.append(this.periodo);
	this.login.append(this.valordepositado);
	this.login.append(this.valorpretendido);
	this.login.addCommand(this.sair);
	this.login.addCommand(this.proximo);
	this.login.setCommandListener(this);

	// form de resultado
	this.resultado = new Form("Resultado");
	this.resultadoMsg = new StringItem("","");
	//adiciona-se o componente ao Form Resultado
	this.resultado.append(this.resultadoMsg);
	this.resultado.addCommand(this.sair);
	this.resultado.setCommandListener(this);

}

public void setperiodo(){

}

public double exp(double x, int y){
double aux;
int i;
aux = 1;
i = 1;
while (i == y){
aux = aux*x;

}

result4 = aux;

return result4;

}

public double func(double i, double w, int n){
double aux;
double aux2;
aux = i + 1;
aux2 = exp(aux, n);
double result3 = (aux2 - (w*i)) -1;

return result3;

}

public double devfunc(double i, double w, int n){
int aux;
double aux1;
double aux3;
aux1 = 1 + i;
aux = n - 1;
aux3 = exp(aux1,aux);
result2 = (n * aux3) - w;

return result2;

}

public double raphson(int n, double p, double f){

int k = 1;
int maxint = 100;
double erro = 0.1;
double precisao = 0.000001;
double w = f/p;

double i = 100;

double fa = func(i,w,n);

while((erro > precisao) && (k < maxint))
{

 fa = func(i,w,n);
 double devfa = devfunc(i,w,n);
 double result1 = i-(fa/devfa);
 erro = (i-result1);

 i = result1;

 k += 1;

 }

return result1;

}

public void startApp()
{
this.tela = Display.getDisplay(this);
this.tela.setCurrent(this.login);
}

public void pauseApp()
{
}

public void destroyApp(boolean condicional)
{
}

public void commandAction(Command c, Displayable d)
{
if (c == this.sair) {
this.destroyApp(true);
this.notifyDestroyed();
}

	String str1 = periodo.getString();
	String str2 = valordepositado.getString();
	String str3 = valorpretendido.getString();

	n = 0;
	p = 0;
	double f = 0;
		
	n = Integer.parseInt(str1);
	p = Double.parseDouble(str2);
	f = Double.parseDouble(str3);
	
	double varResult = raphson(n,p,f);

	if (c == this.proximo) {
	//O Label sempre aparecerá antes do Text não importando
	//a ordem que vc adicione ele ao componente
	//faça o teste trocando de ordem as chamdas.

	//teste = "opa";		

	this.resultadoMsg.setLabel("O Resultado é: "+varResult);//this.periodo.getString()+" ");
	//this.resultadoMsg.setText(this.valordepositado.getString());
	this.tela.setCurrent(this.resultado);
}

}
}[/code]

Declare e variavel f

Bom, ponha o resto do código.
Mas um chute: se a variável foi declarada local no construtor (como você mesmo disse), então ela é local e não poderá ser vista (acessada) no resto do código. Então você terá de declarar a variável como uma variável de instância (argh).

Olha ja tentei tb declarando a variável e não passa.

double nova = 0;
nova = Double.parseDouble(str3);

e outra coisa no mesmo trecho tenho outra variavel so que integer fazendo no caso um parseInt:

n = Integer.parseInt(str1);

e passa normal???

o problema não é o: f = Double.paseDouble(str3);
e sim o que vem antes: double f = 0;
tem que ser: double f = 0D;

Não funcionou não Ricardo.

Pergunta imbecil…
Double é suportado em midlets?

CLDC 1.1 suporta double.

Gustavo,

não intendi o que vc disse.

sou iniciante em j2me por isso a pergunta pode ser boba.

mas foi para aprender um pouco mais que mim cadastrei nesse fórum.

Midlets não aceita double???

???

Todo aplicativo JavaME depende de duas características:

  • CLDC/CDC;
  • MIDP;

O que te importa agora é saber se seu aplicativo está para ser rodado em CLDC 1.1.

Até!

Isso isso isso o CLDC é 1.1.

Caso não fosse CLDC 1.1 ou CDC, teria ocorrido erro de compilação por que ele não reconheceria nenhum tipo com ponto flutuante.

No seu import, não seria assim:

java.lang.Math.*;?

Até!

Não intendi pq usar - java.lang.Math.*;

???