Passagem de parâmetros

Estou começando a estudar JAVA agora e estava fazendo alguns exercícios.
Neste código abaixo eu quero ler 2 valores e imprimir os números entre eles, mas está dando problema. No final do código, na linha num(num1, num2) dá um erro dizendo que esse método não pode usar argumentos do tipo Scanner. Alguém pode me ajudar?

[code]import java.util.Scanner;

public class Cont {

void num(float a, float b){
	if (a > b){
		for (float i=++b; i < a; i++){
			System.out.println(i + " ");
		}
	}
	else{
		for (float i=++a; i < b; i++){
			System.out.println(i + " ");
		}
	}
}

public static void main(String[] args) {
	
	System.out.println("Digite um número:");
	Scanner num1 = new Scanner(System.in);
	System.out.println("Digite um número:");
	Scanner num2 = new Scanner(System.in);
			
	num(num1, num2);
}

}[/code]

Amigão quando postar código, tenta usar a tag CODE …vamos lah

A assinatura do seu método void num(float a, float b) diz que ele deve aceitar dois argumentos do tipo float…
e lah embaixo voce faz uma chamada passando pra ele dois objetos do tipo scanner…

Entendeu ?

Tipo pra funcionar voce precisaria fazer seu scanner ler o que o usuário digitou, algo como num1.readLine(); e atribuir o valor de retorno pra uma variável.

No seu código você só está instanciando o scanner mas nao está lendo nada com ele…

abs.

Desculpe não usar a tag CODE, é que sou novo por aqui :slight_smile:
Não entendi muito bem o que você me explicou, poderia ser mais claro?
É só adicionar essa linha de comando que você me passou?

Não, vamos lá … você precisa entender alguns coceitos…
por exemplo
meu método

public void teste(int x, int y ) {
//faz alguma coisa com x e y
}

Seguinte, pra eu conseguir chamar esse método, eu só consigo chama-lo se na hora que eu chamar… eu passar inteiros pra ele por exemplo

teste( 1, 2) // valido
int a = 2;
int b = 3;
teste( a, b) //Valido
Scanner sc = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
teste(sc, sc2 )// Inválido por que sc e sc2 são do tipo Scanner e não do tipo int…

Deu pra pegar?

Deu sim, com valores determinados eu consegui fazer.
O problema está quando pego valores do teclado, não consigo utilizá-los =/
Tentei usar cast de scanner para float e não dá certo.
Salve-me rsrs

po cara ta errado seu codigo…

[quote] System.out.println(“Digite um número:”);
Scanner num1 = new Scanner(System.in);
System.out.println(“Digite um número:”);
Scanner num2 = new Scanner(System.in);

num(num1, num2); [/quote]

seria assim

Scanner sc = new Scanner(System.in);

 System.out.println("Digite um número:");
int num1  = sc.nextInt();
System.out.println("Digite um número:");
int num2 = sc.nextInt();
num(num1, num2); 

espero ter ajudado…

Att,

Alan Rodrigo.

agora funcionou sim :slight_smile:
obrigado alan!

uma outra dúvida que surgiu agora é que o método num() precisa ser static void num() e não apenas void num()
pq?

Por que voce ta acessando ele num contexo estatico… ( voce ta dentro de um metodo estatico ( public static void main ) entao voce soh pode acessar métodos que sejam estaticos )
Cara eu sugiro você ler um pouco mais dos conceitos de orientação objeto e java antes de sair programando… e tipo entender realmente “porque” funcionou com o código que o Alan passou ta ligado ?

No meu primeiro post tentei fazer isso, fazer você enxergar porque e nao te dar o código pronto…

Abraços.

obrigado pela ajuda omega, e pode deixar que vou ler mais sim :slight_smile:

=) isso ae…
Na Caelum tem algumas apostilas legais, e são Free … comecei com elas… se tiver interesse
www.caelum.com.br
abraço

blz galera!!! fiz o codigo do nosso amigo FerTripa e não está executando dizendo que o metodo main não está definido!!!
sendo que compilou e está tudo definido com o scaner mas não roda!!!

alguma sugestão?

valeu

MoisesJava, você criou seu arquivo com o mesmo nome da classe do nosso colega FerTripa??? Ou seja: Cont.java ???

Valeu thundercas, tinnha criado com outro nome!!!