Classe Scanner

2 respostas
U

Bora ver se eu começo bem nesse fórum. Tô começando agora em Java. Fiz uma classe denominada Time que segue abaixo:

import java.util.Scanner;

public class Time
{
   private int hour;
   private int minute;
   private String time;

   public Time( String timeEntered )
   {
      time = timeEntered;
   }

   // Separa a string no formato "00:00"
   public separateTime()
   {
      Scanner input = new Scanner( time );
      
      input.useDelimiter( ":" );
      hour = input.nextInt;
      minute = input.nextInt;
   }

O método separateTime pega a string no formato hh:mm e atribui hh a hour e mm a minute. Fiz uma outra classe para testar esta e usei o construtor com uma entrada do usuário na linha de comando. Quando ele faz uma chamada ao metodo separateTime, um erro em tempo de execução é encontrado. Fiz uns testes e identifiquei que o erro ocorreu quando na linha Scanner input = new Scanner( time );. Ele faz a verificação de tipos e compila porque realmente não existe incompatibilidade, mas só ocorre este erro porque ele tenta usar uma variável de instância (campo). Se eu fizer a mundança da linha para a seguinte: Scanner input = new Scanner( “03:50” ); ele funciona normalmente. Já usei o operador de coerção ( String ) mas não funcionou.
Uso o J2Sdk 5.0.
E agora? O que pode estar ocorrendo?

[size=“11”]
[color=“red”]

  • Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:

2 Respostas

T

Mas qual é o seu problema mesmo? (Dica: dê qualquer nome para essa classe, menos Time, porque já existe 1 classe no Java (java.sql.Time), e você vai acabar tendo problemas - use a velha e boa língua portuguesa, batize essa classe de Tempo, ou Horário, ou sei lá o quê.)

Corrigi mais ou menos o código para você. Mas não entendi qual o seu problema.

import java.util.Scanner;

public class Time
{
   private int hour;
   private int minute;
   private String time;

   public Time( String timeEntered )
   {
      time = timeEntered;
   }

   // Separa a string no formato "00:00"
   public void separateTime()
   {
      Scanner input = new Scanner( time );
     
      input.useDelimiter( ":" );
      hour = input.nextInt();
      minute = input.nextInt();
   }
}

class TesteTime {
    public static void main(String[] args) {
        Time t = new Time ("03:50");
        t.separateTime();
    }
}
U

Esquece mesmo… O problema tá entre a cadeira e o computador. Eu tava tentando entrar um valor não aceito na linha de comando.

Por isso tava dando pau, mas tudo beleza agora.
Valeu pelo esforço!

Criado 12 de agosto de 2005
Ultima resposta 13 de ago. de 2005
Respostas 2
Participantes 2