Converter parâmetros do tipo String para Int. [RESOLVIDO]

Olá, boa noite!

Por gentileza poderiam me ajudar, não estou conseguindo converter parâmetros do tipo String para Int.
Aparece erros nas linhas: 27, 39 e 52. Sei que preciso converter para inteiro já fiz isso em um exercício anterior , mais dessa maneira converter parâmetro não sei.

public void setAno (String ano){ this.ano = Integer.parseInt(ano); }

Segue o exercício:
Faça um programa em Java para implementar uma calculadora simples com as quatro operações básicas da matemática. Crie três métodos para cada uma das operações e cada método deverá ser sobrecarregado, pois um deles deve receber apenas dois parâmetros do tipo int, o outro apenas dois parâmetros do tipo float e o último apenas dois parâmetros do tipo String. Quando os parâmetros forem do tipo String, os mesmos deverão ser convertidos para o tipo int.

[code] package ExerciciosCapitulo08;

public class Calculadora {

public int soma (int a, int b){
	return a + b;
}

public float soma (float a, float b){
	return a + b;
}

public String soma (String a, String b){
	return a + b;
}


public int subtracao (int a, int b){
	return a - b;
}

public float subtracao (float a, float b){
	return a - b;
}

public String subtracao (String a, String b){
	return a - b;
}

public int divisao (int a, int b){
	return a / b;
}

public float divisao (float a, float b){
	return a / b;
}

public String divisao (String a, String b){
	return a / b;
}


public int multiplicacao (int a, int b){
	return a * b;
}

public float multiplicacao (float a, float b){
	return a * b;
}

public String multiplicacao (String a, String b){
	return a * b;
}

} [/code]

Desde já agradeço.

É do jeito que você fez:

int numero = 0;
String string = "123";

numero = Integer.parseInt(string);

voce pode até tratar a excessão NumberFormatException caso o usuario entrar com dados inválidos,
por exemplo, querer converter
“a123” para numero… impossível :smiley:

abrazz

Os erros nas linhas 27, 39 e 57 ocorem por que estes métodos estam tendando executar operações inválidas para Strings.
Se você quiser realizar operações com caracteres numéricos você tem primeiro que converter os valores.
Eu tentei deste jeito e deu certo!

    public String multiplicacao (String a, String b){  
        return ""+(Float.parseFloat(a) * Float.parseFloat(b));  
    }  

Boa noite luishenriquempereira,

Bom primeiro que se você quer converter uma String para int, o seu método também precisa retornar um int, e a conversão ficaria da seguinte forma:

    public int subtracao (String a, String b) {   
        return Integer.valueOf(a) - Integer.valueOf(b);   
    }   
   public int divisao (String a, String b) {   
        return Integer.valueOf(a) / Integer.valueOf(b);   
    }      
   public int multiplicacao (String a, String b) {   
        return Integer.valueOf(a) * Integer.valueOf(b);   
    }   

Nos três lugares aonde está acontecendo o erro,]

Espero ter ajudado !

RodrigoM91

Muito obrigado!

Eu tinha feito dessa forma, porém não sabia que o método também precisava retornar int, então mesmo alterando o return continuava dando erro.

Valeu mesmo…

Amigo, o seu problema é o corpo dos métodos:


 public String subtracao (String a, String b){  
        return a - b;  
    }  

Se você desejar retornar uma String, terá que fazer um cast implícito:


  public String subtracao (String a, String b){  
        return String.valueOf(Integer.parseInt(a) - Integer.parseInt(b));  
    }  

e utilizar dessa forma:

System.out.println("Resultado: "+obj.subtracao("6","2"));

Espero ter ajudado!

thiagodelgado

Acho que da maneira que você explicou é a mais correta. Pois na apostila que estou respondendo esse exercício, tem explicação de cast implícito. Pensei que não tinha como fazer a conversão sem alterar o método.

Muito obrigado!

Por nada!