Pessoal eu estou com duvida de como retornar uma string contendo esses dados:
Exemplo: se o preço de um carro é 10.000,00, este método deve retornar
uma String contendo todas as seguintes informações:
0 parcelas valor da parcela: 8.000,00 valor final:8.000,00
12 parcelas valor da parcela: 883,34 valor final: 10.600,00
24 parcelas valor da parcela: 466,67 valor final: 11200,00
36 parcelas valor da parcela: 327,78 valor final: 11800,00
48 parcelas valor da parcela: 258,34 valor final:12400,00
60 parcelas valor da parcela: 216,67 valor final: 13000,00
Dica: utilize um laço de repetição para gerar as linhas.
quando eu pesso p retornar a string aparece: “type mismatch:cannot convert fron double to string”
pq dentro desta string eu tenho q fazer os calculos das parcelas usando double!! ai se tivesse como vcs me auxiliar?
Posta ai o seu código entre as tags [code] e [/code].
Você não pode efetuar um cast de double para String. Você tem de fazer uma conversão.
Você pode usar String.valueOf (1234.56) (nesse caso vai mostrar “1234.56”) ou então usar String.format (que é bem fácil de usar).
Não sei se você já tentou fazer isso, mas siga a seguinte ordem:
1 - Faça as contas e obtenta os resultados;
2 - Quando for exibir, use o System.out.printl(), com o método toString() depois de sua variável Double. Exemplo:
System.out.println("O valor é " + variavelDouble.toString());
Tenta aí.
Ou ainda…
Use uma StringBuffer e a cada passagem do looping, concatene o resultado.
Exemplo:
StringBuffer sb = null;
sb.append(variavelDouble.toString());
Tenta aí isso tbm.
Depois você pode usar o System.out.println() mesmo pra exibir os resultados na tela.
Para imprimir algo como
"12 parcelas valor da parcela: 883,34 valor final: 10.600,00 "
use
String s = "";
s += String.format ("%d parcelas valor da parcela: %,.2f valor final: %,.2f", nParcelas, valorParcela, valorFinal);
só que a professora não explicou ainda esses tipos de conversões!!! ai eu não sei se é pra usar, ela ta pedindo p fazer os calculo das parcelas e retornar elas em uma string.
mostraOrcamento que deve retornar uma String contendo as
informações sobre o preço final, quantidade de parcelas e valor da
parcela, em cada uma das possíveis formas de pagamento que o usuário
possa optar. Para isso, considere:
- na compra a vista, há desconto de 20%.
- nas compras parceladas, o número de parcelas possíveis são:
12, 24, 36, 48 e 60, e os acréscimos devem seguir a tabela:
Quantidade de Parcelas Percentual de Acréscimo
12 6%
24 12%
36 18%
48 24%
60 30%
Exemplo: se o preço de um carro é 10.000,00, este método deve retornar
uma String contendo todas as seguintes informações:
0 parcelas valor da parcela: 8.000,00 valor final:8.000,00
12 parcelas valor da parcela: 883,34 valor final: 10.600,00
24 parcelas valor da parcela: 466,67 valor final: 11200,00
36 parcelas valor da parcela: 327,78 valor final: 11800,00
48 parcelas valor da parcela: 258,34 valor final:12400,00
60 parcelas valor da parcela: 216,67 valor final: 13000,00
[code]public class Carro {
//atributos
double preco;
//métodos de inicialização
public void inicializaCarro(double p){
preco=p;
}
//método que retorna uma string contendo informações sobre o preço final
public String mostraOrcamento(double p){
String informacao;
double info=0;
double precoFinal=0;
double quantParcelas=0;
double valorParcela=0;
while(p!=0){
if(quantParcelas==0){
valorParcela=p-(20/100);
precoFinal=valorParcela;
info=(quantParcelas+valorParcela+precoFinal);
}
if (quantParcelas==12){
valorParcela=p/12-(6/100);
precoFinal=p+(6/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==24){
valorParcela=p/24-(12/100);
precoFinal=p+(12/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==36){
valorParcela=p/36-(18/100);
precoFinal=p+(18/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==48){
valorParcela=p/48-(24/100);
precoFinal=p+(24/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==60){
valorParcela=p/60-(30/100);
precoFinal=p+(30/100);
info=(quantParcelas+valorParcela+precoFinal);
}
String.valueOf (info);
return informacao;
}
}
}[/code]
se o único jeito for fazer essa conversão, como que eu utilizo esse String.valueOf()?
Tente o seguinte, repare meu código no final.
[code]
public class Carro {
//atributos
double preco;
//métodos de inicialização
public void inicializaCarro(double p){
preco=p;
}
//método que retorna uma string contendo informações sobre o preço final
public String mostraOrcamento(double p){
String informacao;
double info=0;
double precoFinal=0;
double quantParcelas=0;
double valorParcela=0;
while(p!=0){
if(quantParcelas==0){
valorParcela=p-(20/100);
precoFinal=valorParcela;
info=(quantParcelas+valorParcela+precoFinal);
}
if (quantParcelas==12){
valorParcela=p/12-(6/100);
precoFinal=p+(6/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==24){
valorParcela=p/24-(12/100);
precoFinal=p+(12/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==36){
valorParcela=p/36-(18/100);
precoFinal=p+(18/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==48){
valorParcela=p/48-(24/100);
precoFinal=p+(24/100);
info=(quantParcelas+valorParcela+precoFinal);
}
if(quantParcelas==60){
valorParcela=p/60-(30/100);
precoFinal=p+(30/100);
info=(quantParcelas+valorParcela+precoFinal);
}
StringBuffer sb = null;
sb.append(info);
informacao = sb.toString();
return informacao;
}
}
} [/code]
Um probleminha que você vai ter: 30 / 100 dá exatamente 0 em Java. Use 30.0 / 100.0; isso faz com que o Java entenda como um número de ponto flutuante, em vez de entender como um inteiro. De modo geral, cuidado com as divisões.
pessoal, eu converti para string do jeito q tava, ai eu erro la no método mostraOrcamento, falando q tem q retornar a string, mas eu ja estou retornando!!!
StringBuffer sb = null;
sb.append(info);
informacao = sb.toString();
return informacao;
Tira o return de dentro da chave do while
Tira o return de dentro da chave while. Eu acabei esquecendo desse detalhe. Mas tira o return de dentro do while, coloque-o depois, no fim do método principal.
Qualquer coisa, tenta dessa maneira aqui:
# public class Carro {
# #
# # //atributos
# #
# # double preco;
# #
# # //métodos de inicialização
# #
# # public void inicializaCarro(double p){
# #
# # preco=p;
# # }
# #
# # //método que retorna uma string contendo informações sobre o preço final
# #
# # public String mostraOrcamento(double p){
# #
# # String informacao;
## StringBuffer sb = null;
# # double info=0;
# # double precoFinal=0;
# # double quantParcelas=0;
# # double valorParcela=0;
# #
# # while(p!=0){
# #
# # if(quantParcelas==0){
# #
# # valorParcela=p-(20/100);
# # precoFinal=valorParcela;
# # info=(quantParcelas+valorParcela+precoFinal);
# # }
# #
# # if (quantParcelas==12){
# #
# # valorParcela=p/12-(6/100);
# # precoFinal=p+(6/100);
# # info=(quantParcelas+valorParcela+precoFinal);
# #
# # }
# #
# # if(quantParcelas==24){
# #
# # valorParcela=p/24-(12/100);
# # precoFinal=p+(12/100);
# # info=(quantParcelas+valorParcela+precoFinal);
# # }
# #
# # if(quantParcelas==36){
# #
# # valorParcela=p/36-(18/100);
# # precoFinal=p+(18/100);
# # info=(quantParcelas+valorParcela+precoFinal);
# #
# # }
# # if(quantParcelas==48){
# #
# # valorParcela=p/48-(24/100);
# # precoFinal=p+(24/100);
# # info=(quantParcelas+valorParcela+precoFinal);
# # }
# # if(quantParcelas==60){
# #
# # valorParcela=p/60-(30/100);
# # precoFinal=p+(30/100);
# # info=(quantParcelas+valorParcela+precoFinal);
# #
# # }
# #
# # sb.append(info);
# # informacao = sb.toString();
# #
# # }
## return informacao;
# # }
# # }
Daí, depois, dá uma lida na API pra ver como funciona StringBuffer, porque se sua professora perguntar, vai estar na ponta da língua. rsrsrs
Abraço, tomara que dê certo.
Olá,
Sou nova aqui… podem me explicar uma coisa?
Estou tentando fazer um programa que analisa se o numero é par ou impar utilizando o Java ME. E o meu problema é exibir um valor String trabalhando com um double, na linha 61 e exibir na linha 47(clicando no botao ok):
public class ParouImpar extends MIDlet implements CommandListener{
TextField n,resposta;
Command ok;
Form outros;
Display tela;
Command sair;
public ParouImpar() {
sair = new Command ("Sair",Command.EXIT,0);
outros = new Form("Outros");
n = new TextField ("Valor","",10,TextField.NUMERIC);
resposta = new TextField("Resposta","", 30,TextField.ANY);
sair = new Command ("Sair",Command.EXIT,0);
ok = new Command ("Ok",Command.OK,1);
outros.append(n);
outros.append(resposta);
outros.addCommand(sair);
outros.addCommand(ok);
outros.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
notifyDestroyed();
}
protected void pauseApp() { }
protected void startApp() {
tela = Display.getDisplay(this);
tela.setCurrent(outros);
}
public void commandAction(Command c, Displayable d) {
if (c == sair) {
notifyDestroyed();
if(c == ok){
double n1 = Double.parseDouble(n.getString());
resposta.setString(String.valueOf(setNumero(n1)));
}
}
}
private String setNumero(double n1){
String saida ="";
if(n1%2 == 0){
saida = "numero par";
}
else{
saida = "numero impar";
}
return n1;
}
}
abraço