Frauzer Postado Outubro 19, 2019 Denunciar Share Postado Outubro 19, 2019 olá, estou tendo muita dificuldade para compilar um script de uma calculadora, gostaria que me ajudassem a encontrar o erro public static void main(String args[]) { Calculos c=new Calculos(); System.out.println(">>>>"+c.calculadora("5/5")); } public String calculadora(String expressao) { String resultado; List<Double> listaNumeros = new ArrayList<Double>(); List<Character> listaOperadores = new ArrayList<Character>(); listaNumeros = obterNumeros(expressao); listaOperadores = obterOperadores(expressao); resultado = calcularValor(listaNumeros, listaOperadores); return resultado; } private String calcularValor(List<Double> listaNumeros, List<Character> listaOperadores) { String resultado = ""; double total = 0.0; int j=0; for (int i = 0; i < listaNumeros.size()-1; i++) { if ( total==0.0) { double numero1 = listaNumeros.get(i).doubleValue(); double numero2 = listaNumeros.get(i + 1).doubleValue(); char operador = listaOperadores.get(i).charValue(); total = executarOperacao(numero1, operador, numero2); } else if (total>0.0) { double numero2 = listaNumeros.get(i).doubleValue(); char operador = listaOperadores.get(j).charValue(); total = executarOperacao(total, operador, numero2); j++; } } resultado = ""+total; return resultado; } private double executarOperacao(double numero1, char operador, double numero2) { double resultado = 0.0; if (operador == '+') { resultado = numero1 + numero2; } else if (operador == '-') { resultado = numero1 - numero2; } else if (operador == '/') { resultado = numero1 / numero2; } else if (operador == '*') { resultado = numero1 * numero2; } return resultado; } private List<Double> obterNumeros(String expressao) { List<Double> listaNumeros = new ArrayList<Double>(); String numeroEmString = ""; for (int i = 0; i < expressao.length(); i++) { if (isOperador(expressao.charAt(i))) { Double numero = Double.valueOf(numeroEmString); listaNumeros.add(numero); numeroEmString = ""; } else { numeroEmString = numeroEmString.concat("" + expressao.charAt(i)); } } if(!numeroEmString.isEmpty()) { Double numero = Double.valueOf(numeroEmString); listaNumeros.add(numero); } return listaNumeros; } private List<Character> obterOperadores(String expressao) { List<Character> listaOperadores = new ArrayList<Character>(); for (int i = 0; i < expressao.length(); i++) { if (isOperador(expressao.charAt(i))) { listaOperadores.add(new Character(expressao.charAt(i))); } } return listaOperadores; } private boolean isOperador(char caracter) { boolean isOperador = false; if (caracter == '-' || caracter == '+' || caracter == '/' || caracter == '*') { isOperador = true; } return isOperador; } } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Frauzer
olá, estou tendo muita dificuldade para compilar um script de uma calculadora, gostaria que me ajudassem a encontrar o erro
public static void main(String args[])
{
Calculos c=new Calculos();
System.out.println(">>>>"+c.calculadora("5/5"));
}
public String calculadora(String expressao) {
String resultado;
List<Double> listaNumeros = new ArrayList<Double>();
List<Character> listaOperadores = new ArrayList<Character>();
listaNumeros = obterNumeros(expressao);
listaOperadores = obterOperadores(expressao);
resultado = calcularValor(listaNumeros, listaOperadores);
return resultado;
}
private String calcularValor(List<Double> listaNumeros, List<Character> listaOperadores) {
String resultado = "";
double total = 0.0;
int j=0;
for (int i = 0; i < listaNumeros.size()-1; i++) {
if ( total==0.0) {
double numero1 = listaNumeros.get(i).doubleValue();
double numero2 = listaNumeros.get(i + 1).doubleValue();
char operador = listaOperadores.get(i).charValue();
total = executarOperacao(numero1, operador, numero2);
}
else if (total>0.0) {
double numero2 = listaNumeros.get(i).doubleValue();
char operador = listaOperadores.get(j).charValue();
total = executarOperacao(total, operador, numero2);
j++;
}
}
resultado = ""+total;
return resultado;
}
private double executarOperacao(double numero1, char operador, double numero2) {
double resultado = 0.0;
if (operador == '+') {
resultado = numero1 + numero2;
} else if (operador == '-') {
resultado = numero1 - numero2;
} else if (operador == '/') {
resultado = numero1 / numero2;
} else if (operador == '*') {
resultado = numero1 * numero2;
}
return resultado;
}
private List<Double> obterNumeros(String expressao) {
List<Double> listaNumeros = new ArrayList<Double>();
String numeroEmString = "";
for (int i = 0; i < expressao.length(); i++) {
if (isOperador(expressao.charAt(i))) {
Double numero = Double.valueOf(numeroEmString);
listaNumeros.add(numero);
numeroEmString = "";
} else {
numeroEmString = numeroEmString.concat("" + expressao.charAt(i));
}
}
if(!numeroEmString.isEmpty())
{
Double numero = Double.valueOf(numeroEmString);
listaNumeros.add(numero);
}
return listaNumeros;
}
private List<Character> obterOperadores(String expressao) {
List<Character> listaOperadores = new ArrayList<Character>();
for (int i = 0; i < expressao.length(); i++) {
if (isOperador(expressao.charAt(i))) {
listaOperadores.add(new Character(expressao.charAt(i)));
}
}
return listaOperadores;
}
private boolean isOperador(char caracter) {
boolean isOperador = false;
if (caracter == '-' || caracter == '+' || caracter == '/' || caracter == '*') {
isOperador = true;
}
return isOperador;
}
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.