Olá, bem, estou tendo problemas ao utilizar a classe Scanner. Eu tenho o seguinte código:
importjava.io.*;importjava.net.*;importjava.util.Scanner;publicclassScanner{intport;publicvoidPortScan(){Scannerentrada=newScanner(System.in);System.out.println("Entre com o IP: ");Stringip=entrada.nextLine();System.out.println("Numero de portas: ");Stringaux=entrada.nextLine();port=Integer.parseInt(aux);System.out.println("Varrendo portas, aguarde..."+"\n");try{InetAddressaddr=InetAddress.getByName(ip);Stringhostname=addr.getHostName();for(inti=0;i<port;i++){Sockets=null;try{s=newSocket(addr,i);System.out.println("A porta "+i+" está aberta. "+""+hostname);}catch(IOExceptionex){}finally{try{if(s!=null)s.close();}catch(IOExceptionex){}}}}catch(UnknownHostExceptionex){System.err.println(ex);}System.out.println("\n"+"Fim");}publicstaticvoidmain(Stringargs[]){Scannersp=newScanner();sp.PortScan();}}
É um portscan super simples. O problema é ao compilar, eu obtenho o seguinte erro:
andre@darkstar:~$ javac Scanner.java
Scanner.java:4: Scanner is already defined in this compilation unit
import java.util.Scanner;
^
Scanner.java:16: cannot find symbol
symbol : constructor Scanner(java.io.InputStream)
location: class Scanner
Scanner sp = new Scanner (System.in);
^
Scanner.java:20: cannot find symbol
symbol : variable entrada
location: class Scanner
String ip = entrada.nextLine();
^
Scanner.java:25: cannot find symbol
symbol : variable entrada
location: class Scanner
String aux = entrada.nextLine();
^
4 errors
As vezes parece que eu não tenho a java.util aqui. Enfim, a versão do meu Java é: 1.5.0
Acho que o problema é pq vc criou o nome da classe como Scanner. Coloca ScannerTest por exemplo, que deve parar esse problema.
Ou vc remove o import da classe Scanner e no código faz isso: java.util.Scanner entrada = new java.util.Scanner (System.in); mas acho mais apropriado mudar o nome da classe mesmo.
A
Andre_Rosa
Ermin:
Por se tratar de uma String, tenta assim:
Stringip=entrada.next();
Pode funcionar!
[]'s
Oi Ermin, fiz como você sugeriu e o erro persiste. Inclusive testei em outro computador, e o erro é o mesmo, não há nada de errado com minha versão do Java. Inclusive, no outro computador, o NetBeans disse que o import java.util.Scanner não estava sendo usado. Estranho :shock:
Obrigado.
Mais alguma sugestão ?
A
Andre_Rosa
Oi romarcio,
fiz como você sugeriu, alterei o nome da classe para algo qualquer como “test”, o erro agora é:
Antes vc estava criando um objeto Scanner mas não do pacote util… mas da sua classe que se chamava Scanner(péssima pratica) c vc mudou o nome da sua classe vc tem que criar o objeto de acordo com sua classe meu caro… um conselho… da uma lida sobre a sintaxe da linguagem, OOP e Java Beans… pq metodos começam com letra minuscula…
Até…
A
Andre_Rosa
romarcio,
obrigado, agora compilou sem erro algum. Entretanto, na hora de varrer as portas ele acusa um erro:
No codigo nao tem problema mesmo não… mas c o usuario digitar alguma coisa q nao for numero na hora da converção vai ocorrer a exception… c cv quer tratar a entrada do usuario… bota a parte de entrada dentro de um try/catch que trate a exceção NumberFormatException…
até
A
Andre_Rosa
Obrigado, Pedro. Consegui resolver!
A
Andre_Rosa
romarcio:
Não vejo problema, pelo que vi no código, mas pode alterar isso: