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?
importjava.util.Scanner;publicclassCont{voidnum(floata,floatb){if(a>b){for(floati=++b;i<a;i++){System.out.println(i+" ");}}else{for(floati=++a;i<b;i++){System.out.println(i+" ");}}}publicstaticvoidmain(String[]args){System.out.println("Digite um número:");Scannernum1=newScanner(System.in);System.out.println("Digite um número:");Scannernum2=newScanner(System.in);num(num1,num2);}}
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.
F
FerTriPa
Desculpe não usar a tag CODE, é que sou novo por aqui
Não entendi muito bem o que você me explicou, poderia ser mais claro?
É só adicionar essa linha de comando que você me passou?
Omeganosferatu
Não, vamos lá … você precisa entender alguns coceitos…
por exemplo
meu método
publicvoidteste(intx,inty){//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)// validointa=2;intb=3;teste(a,b)//ValidoScannersc=newScanner(System.in);Scannersc2=newScanner(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?
F
FerTriPa
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
Scannersc=newScanner(System.in);System.out.println("Digite um número:");intnum1=sc.nextInt();System.out.println("Digite um número:");intnum2=sc.nextInt();num(num1,num2);
espero ter ajudado…
Att,
Alan Rodrigo.
F
FerTriPa
agora funcionou sim
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?
Omeganosferatu
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.
F
FerTriPa
obrigado pela ajuda omega, e pode deixar que vou ler mais sim
Omeganosferatu
=) isso ae…
Na Caelum tem algumas apostilas legais, e são Free … comecei com elas… se tiver interesse
www.caelum.com.br
abraço
MoisesJava
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
thundercas
MoisesJava, você criou seu arquivo com o mesmo nome da classe do nosso colega FerTripa??? Ou seja: Cont.java ???