Estou com uma dúvida de conversão. Estou utilizando a classe Scanner para inserir pelo teclado números int mas não consigo entrar com um char. Este é o meu aplicativo:
/* aplicativo que pede ao usuário para entrar com dois operandos e um operador depois * calcular e mostrar o resultado da operação correspondnte */importjava.util.Scanner;classTd2_9{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Digite o 1º operando: ");intoperando1=input.nextInt();System.out.print("Digite o operador: ");charoperador=input.Char();System.out.print("\nDigite o 2º operando: ");intoperando2=input.nextInt();intresultado=0;if(operador=="+"){resultado=operando1+operando2;}elseif(operador=="-"){resultado=operando1-operando2;}elseif(operador=="*"){resultado=operando1*operando2;}elseif(operador=="/"){resultado=operando1/operando2;}System.out.println("resultado = "+operando1+""+operador+""+operando2);}}
A dúvida é na linha onde declarei a variável [color=blue]char[/color] operador
Declare - a como String e utilize a chamada input.next(), a qual retorna uma String. blz?
gp7junior
Talvez você devesse procurar na api da classe Scanner.
Nao consegui visualizar um método .char().
tente usar o nexShort().
valew
J
junior.ds
Vou tentar!
J
junior.ds
Ok! pessoal. Utilizei a dica do Tecnoage e o aplicativo compilou sem erros, mas o resultado não estar sendo calculado. Sempre quando executo o resultado sempre dá 0 (zero). Vejam como estar o código agora:
importjava.util.Scanner;classTd2_9{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Digite o 1º operando: ");intoperando1=input.nextInt();System.out.print("Digite o operador: ");Stringoperador=input.next();System.out.print("Digite o 2º operando: ");intoperando2=input.nextInt();intresultado=0;if(operador=="+"){resultado=operando1+operando2;}elseif(operador=="-"){resultado=operando1-operando2;}elseif(operador=="*"){resultado=operando1*operando2;}elseif(operador=="/"){resultado=operando1/operando2;}System.out.println("resultado: "+operando1+""+operador+""+operando2+"="+resultado);}}
O que vcs acham que pode estar errado ?
lina
Oi,
Como eu nao tenho Scanner aqui.. fiz assim ó: (deve ser a mesma maneira)
// Declara as variaveis que recebe as teclas do teclado. BufferedReaderteclado=newBufferedReader(newInputStreamReader(System.in));// Declara os operadores.Stringoperando1=null;Stringoperador=null;Stringoperando2=null;floatresultado1=0,resultado3=0,total=0;// Pergunta quel o primeiro operando.System.out.print("Digite o 1º operando: ");operando1=teclado.readLine();resultado1=Float.parseFloat(operando1);// Converte o valor digitadoSystem.out.print("Digite o operador: ");operador=teclado.readLine();System.out.print("\nDigite o 2º operando: ");operando2=teclado.readLine();resultado3=Float.parseFloat(operando2);// Converte o valor digitado.if(operador.equals("+")){total=resultado1+resultado3;}elseif(operador.equals("-")){total=resultado1+resultado3;}elseif(operador.equals("*")){total=resultado1+resultado3;}elseif(operador.equals("/")){total=resultado1+resultado3;}System.out.println("resultado = "+operando1+""+operador+""+operando2);System.out.println("Total: "+total);
Deve ajudar...
Tchauzin!
T
Tecnoage
PUTZ!!! Foi mal, tava com pressa aki na empresa e só compilei… Foi mal cara… rsrsrs nem prestei atenção na lógica… hahaha
T
Tecnoage
Corrigindo… Com Scanner…
importjava.util.Scanner;classTeste{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Digite o 1º operando: ");intoperando1=input.nextInt();System.out.print("Digite o operador: ");Stringoperador=input.next();System.out.print("\nDigite o 2º operando: ");intoperando2=input.nextInt();intresultado=0;if(operador.equals("+")){resultado=operando1+operando2;}elseif(operador.equals("-")){resultado=operando1-operando2;}elseif(operador.equals("*")){resultado=operando1*operando2;}elseif(operador.equals("/")){resultado=operando1/operando2;}System.out.println("resultado = "+operando1+""+operador+""+operando2+""+"="+resultado);}}
Vc deveria trocar os testes entre strings de “=” para stringQualquer.equals(“operando”)
J
junior.ds
ok pessoal, dei uma olhada no código da lina (obrigado lina pela dica) e modifiquei as comparações booleanas de " [color=blue]==[/color] " para o metodo "[color=blue]equals[/color]" e o resultado agora deu tudo OK!. Mas não quero ver apenas o resultado dando certo, quero saber a explicação porque que com o método equals deu certo e com o " == " não deu. Vejam novamente o código:
importjava.util.Scanner;classTd2_9{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Digite o 1º operando: ");intoperando1=input.nextInt();System.out.print("Digite o operador: ");Stringoperador=input.next();System.out.print("Digite o 2º operando: ");intoperando2=input.nextInt();intresultado=0;if(operador.equals("+")){resultado=operando1+operando2;}elseif(operador.equals("-")){resultado=operando1-operando2;}elseif(operador.equals("*")){resultado=operando1*operando2;}else{resultado=operando1/operando2;}System.out.println("resultado: "+operando1+""+operador+""+operando2+"="+resultado);}}
[color=green]Obrigado a todos pelas dicas. [/color]
J
junior.ds
Pois é Tecnoage; é como vc colocou mesmo. Estava corrigindo meu código enquanto vc respondeu do mesmo jeito que eu corrigi, foi mal em não ter olhado sua resposta antes. E a explicação de dar certo com “equals” e não com “==”, vc poderia me dizer?
ok! pessoal novamente obrigado a todos pela ajuda.
lina
Oi,
Então vamos lá…
assim, para comparar String você não pode nunca compara-las com simbolos, sinal etc… ( ==, >, < )… e sim, somente equals!
e para comparar numeros no seu caso int, ai sim… nunca usar equals… sómente simbolos.
como sua variavel operador era uma String, deve-se comparar com o equals… pois equals no java é comparação de String x String. e não String x inteiro
Tchauzin!
J
junior.ds
Ok! Agora entendi. Vou memorizar [/b]lina[/b].
Agradeço a todos pela ajuda, obrigado.
Até uma outra postagem.
R
raghy
importjava.util.Scanner;classTd2{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Digite o 1º operando: ");intoperando1=input.nextInt();System.out.print("Digite o operador: ");//har operador = input.Char(); System.out.print("\nDigite o 2º operando: ");intoperando2=input.nextInt();Stringoperador="+";intresultado=0;if(operador=="+"){resultado=operando1+operando2;}elseif(operador=="-"){resultado=operando1-operando2;}elseif(operador=="*"){resultado=operando1*operando2;}elseif(operador=="/"){resultado=operando1/operando2;}System.out.println("resultado = "+operando1+""+operador+""+operando2);}}
bem porque nao fazer o operador ser String somente… ???