Passagem de parâmetros por valor! [RESOLVIDO]

7 respostas
manolo

Boa tarde pessoal!

Estou aprendendo na facul, a passagem de parâmetros por valor em java. E estou encontrando algumas duvidas com relação a utilização :XD:

Meu professor pediu para que montasse um pequeno exemplo mostrando como se faz a passagem de parâmetros por valor(tipo primitivo), e de copia de referencia(objetos)!

Mais abaixo está o código que estou elaborando:

import java.util.Scanner;
public class PassagemValor {

	private int parametro;
	
    public void setrecebe (int parametro) {
    	
    	parametro += 5;
    	
    }
    
    public int getrecebe(){
    	
    	return parametro;
    }
    
    public static void main (String args[]){
    	
    	Scanner input = new Scanner(System.in);
    	
    	int numero;
    	
    	System.out.println(" Informe um numero inteiro para teste: ");
    	numero = input.nextInt();input.nextLine();
    	
    	setrecebe(numero);
    	
    	System.out.println(" o valor informado foi: " + numero);
    	System.out.println(" O valor modificado foi:" + getrecebe());
    	
    }
    
}

O Problema que está ocorrendo e esse:

non-static method setrecebe(int) cannot be referenced from a static context line-34

Alguem podia claria minhas ideias?

Obrigado a todos pela atençao!

Abraço.

7 Respostas

ignacio83

coloque:

...
private static int parametro;

public int static getrecebe()

e

public int static setrecebe(...)
...

Dê uma pesquisa em static…

manolo

ixiiiii.... nao entendi nada, e deu alguns erros!
ahuahauhauhuahauhauhahahauhauhau

Gostaria de saber o que estou fazendo de errado, ja li algumas coisas, mais nao esta entrando em minha cabeça!

Olha por exemplo, mudei o codigo aqui:

import java.util.Scanner;
public class PassagemValor {


    static void setrecebe (int parametro) {
    	
    	parametro += 5;
    	
    }

    
    public static void main (String args[]){
    	
    	Scanner input = new Scanner(System.in);
    	
    	int numero;
    	
    	System.out.println(" Informe um numero inteiro para teste: ");
    	numero = input.nextInt();input.nextLine();
    	
    	setrecebe(numero);
    	
    	System.out.println(" o valor informado foi: " + numero);
    	
    	
    }
    
}

O que eu queria saber como eu faço para retornar o parametro que eu envie para o metodo so que modificado!
teria como?

felipekeller

Tente desta forma.

public class PassagemValor {  
	
	static int parametro;
   
	public void setrecebe (int parametro) {
		this.parametro =  parametro+5;
   }  
	
	public int getRecebe(){
		return parametro;
	}
      
    public static void main (String args[]){
        Scanner input = new Scanner(System.in);
        PassagemValor passagem = new PassagemValor();
        
        int numero;  
           
        System.out.println(" Informe um numero inteiro para teste: ");  
        numero = input.nextInt();input.nextLine();  
           
         passagem.setrecebe(numero);  
           
         System.out.println(" o valor informado foi: " + passagem.getRecebe());  
           
           
     }  
       
 }
G

Boa tarde, dê uma olhada:
http://www.guiadohardware.net/comunidade/java-parametros/183748/Parâmetros em Java

manolo

[b]Então Felipe, dessa forma que vc me passo se referre a passagem de parâmetros por copia de referencia estou certo?

O que eu queria saber, se ah como eu retornar o parâmetro que eu envie ao método por meio de valor primitivo!

E se não houver como, de que utilidade tem essa passagem por valor?

Espero ter explicado direitinho, valeu pela ajuda até agora pesoal.

Abraçoss[/b]

manolo

Alguem poderia me ajudar ?

Rocklee6544

A regra para static básicamente é static com static.
Nem o método,nem á váriavel pertecem ao objeto, portanto vc não poderá usar algo como Objeto.método/variável estática ou mesmo chamar um método de objeto de dentro de um método estático.

Isso porque simplesmente o compilador não sabe qual objeto vc esta se referindo.

[color=red]vc chamou o método setRecebe, mas esse setRecebe pertence a quem?[/color]
[color=blue]Resposta :não sei, eu sou um método estático da classe que não tenho nada haver com os métodos de objeto.
Percebeu que não a nenhum vínculo entre o método estático e o objeto ou seja ele simplemente não sabe quem chamar, pois não esta vinculado a nenhum objeto em específico.[/color]
.

o que vc deve fazer:

int x=10; 

setModifica(x);
System.out.printf(" agora o valor de x é:"+x);

public void setModifica(int z){
  z=15;
  System.out.printf("este é o novo valor "+z);
}
}
Criado 1 de março de 2010
Ultima resposta 2 de mar. de 2010
Respostas 7
Participantes 5