Os valores não estão sendo passados para os métodos 
Quando eu imprimo, o valor retorna todo 0.0
[code]import java.text.NumberFormat;
//import java.text.NumberFormat;
import javax.swing.*;
public class Ex02 {
public void lerNumeros (int num, int num2) {
try {
num = Integer.parseInt(JOptionPane.showInputDialog("1° Número: "));
num2 = Integer.parseInt(JOptionPane.showInputDialog("2° Número: "));
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Apenas números inteiros nesse campo: ");
}
}
public void Somar (int num, int num2) {
float soma = num + num2;
JOptionPane.showMessageDialog(null, "Soma: " + soma);
}
public void Subtrair (int num, int num2) {
float sub = num - num2;
JOptionPane.showMessageDialog(null, "Subtração: " + sub);
}
public void Multiplicar (int num, int num2) {
float mult = num * num2;
JOptionPane.showMessageDialog(null, "Multiplicação: " + mult);
}
public void Divisao (int num, int num2) {
float div = num / num2;
JOptionPane.showMessageDialog(null, "Divisão: " + div);
}
public static void main (String args[]) {
int num = 0;
int num2 = 0;
Ex02 ex = new Ex02();
ex.lerNumeros(num, num2);
ex.Somar(num, num2);
ex.Subtrair(num, num2);
ex.Multiplicar(num, num2);
ex.Divisao(num, num2);
}
}[/code]
Seu problema acontece porque em Java não existe passagem de parâmetro por referência.
[code] public static void main(String[] args) throws Exception{
Integer num = 10;
System.out.println("Antes do método: "+num);
metodo(num);
System.out.println("Depois do método: "+num);
}
private static void metodo(Integer num){
System.out.println("Dentro do método: "+num);
num = Integer.valueOf(300);
System.out.println("Depois da atribuição: "+num);
}[/code] Veja o que é impresso na execução desse código.
Quando você envia um parâmetro para um método, apenas uma cópia do valor dele é enviado.
Se envia um tipo primitivo, é enviada uma cópia do valor, e não a própria variável.
Se envia um objeto, é enviada uma cópia da referência, e não a referência que você tem ao invocar o método.
Você pode fazer o seu ‘lerNumero’ retornar um número
public void lerNumero () {
int n = -1;
try {
n = Integer.parseInt(JOptionPane.showInputDialog("1° Número: "));
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Apenas números inteiros nesse campo: ");
}
return n;
}
Ou guardar os números dentro da classe
[quote=digaoneves]Seu problema acontece porque em Java não existe passagem de parâmetro por referência.
[code] public static void main(String[] args) throws Exception{
Integer num = 10;
System.out.println("Antes do método: "+num);
metodo(num);
System.out.println("Depois do método: "+num);
}
private static void metodo(Integer num){
System.out.println("Dentro do método: "+num);
num = Integer.valueOf(300);
System.out.println("Depois da atribuição: "+num);
}[/code] Veja o que é impresso na execução desse código.
Obrigado pela resposta, mas eu não entendo essa sintaxe que você usou…
Throws Exception…
Integer.ValueOff…
Eu não sei o que isso faz, fica difícil entender 
Obrigado!
[quote=magostta]Você pode fazer o seu ‘lerNumero’ retornar um número
public void lerNumero () {
int n = -1;
try {
n = Integer.parseInt(JOptionPane.showInputDialog("1° Número: "));
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Apenas números inteiros nesse campo: ");
}
return n;
}
Ou guardar os números dentro da classe[/quote]
Cara, eu não sei usar o return.
consultou o javadoc dos métodos que não entendeu?
bom, os dois são irrelevantes para o problema.[code] public static void main(String[] args){
Integer num = 10;
System.out.println("Antes do método: "+num);
metodo(num);
System.out.println("Depois do método: "+num);
}
private static void metodo(Integer num){
System.out.println("Dentro do método: "+num);
num = 300;
System.out.println("Depois da atribuição: "+num);
}[/code] Melhor?
o return funciona assim:
voce tem um método
[code]int somaNumeros(int a, int b){
int c = a+b;
return c;
}[/code]
veja que la em cima eu coloquei um int antes do nome do método, aquilo é o tipo de dados que vou retornar…
veja que declarei uma variavel do tipo int, e somei os numeros passados por parâmetro, depois retornei o resultado
quando você fizer assim
int algumaVariavel = somaNumeros(5,10);
você tem que ler mentalmente dessa forma: " a variavel irá receber o valor que o método somaNumeros esta retornando, no caso o método tem la “return c” que é a soma dos dois numeros que foram passados por parâmetro.
então abaixo, quando você fizer:
system.out.println(algumaVariavel), ele vai imprimir 15.
no caso usei int, mais você pode usar qualquer tipo… como string(texto),double,float, objetos que você mesmo cria etc…
o return deve retornar o mesmo tipo que você colocou na assinatura do método…
espero que tenha compreendido
Eu acho que a confusão dele é por outro motivo…[code]public static void main(String[] args){
Pessoa p = new Pessoa():
p.setNome("Beto");
System.out.println(p.getNome());
alterarNome(p);
System.out.println(p.getNome());
}
public static void alterarNome(Pessoa p){
p.setNome("Zé");
}[/code]Esse código funcionaria como ele quer, o objeto seria alterado dentro do método, e o objeto depois da finalização da execução do método, teria o seu nome alterado, mas no caso dele isso não funciona, justamente porque não existe passagem de parâmetros por referência em Java.