Leitura de arquivos de dados

Tristan Remus:

Estou escrevendo um programa na minha classe java AP e estou muito confuso. O programa é suposto para ler um arquivo de dados usando outro programa chamado EasyReader. O programa consiste em uma classe de objeto que encontra o maior número, número médio, e menor número. A classe de teste é suposto para ler o arquivo de dados (numbers.bat) que proporciona um conjunto de números eo programa é suposto para imprimir o maior, médio e menor de todas as linhas do arquivo de dados. No entanto, ele está a ler apenas uma linha do arquivo de dados (o do meio) em vez de três. Ele está exibindo

Largest = 7.3 Medium = 5 Smallest = 3.2

Por favor ajude. Obrigado!

Aqui é a classe Object:

public class Numbers 
{

    double small;
    double medium;
    double large;

    public Numbers(double A, double B, double C)
    {

      if(A>=B && A>=C)
      {
        large = A;


        if(B>=C && B<=A)
        {
          medium = B;

          small = C;
        }
        else
        {
          medium = C;
          small = B;
        }

      } 
      else if(B>=A && B>=C)
      {
          large = B;


            if(A>=C && A<=B)
            {
              medium = A;

              small = C;
            }
            else
            {
              medium = C;
              small = A;
            }


      } 

      else 
      {
          large = C;


            if(A>=B && A<=C)
            {
              medium = A;

              small = B;
            }
            else
            {
              medium = B;
              small = A;
            }

      }

    }



        public double large()
        {
            return large;

        }
        public double medium()
        {
            return medium;

        }
        public double small()
        {
            return small;

        }
    }   

Aqui é a classe de teste:

public class NumbersTest 
{

    public static void main(String[] args) 
    {

        EasyReader file = new EasyReader("numbers.dat");
        double value1 = file.readDouble();
        double value2 = file.readDouble();
        double value3 = file.readDouble();


        value1 = file.readDouble();
        value2 = file.readDouble();
        value3 = file.readDouble();




         Numbers nums = new Numbers(value1, value2, value3);

         System.out.println("Largest = " + nums.large()  + " Medium = " + nums.medium() + " Smallest = " + nums.small());
    }


}

E por último o arquivo de dados (numbers.bat)

4 9 2.5
3.2 5 7.3
12 8.2 9.1 

A saída agora:

Largest = 7.3 Medium = 5.0 Smallest = 3.2

A saída esperada:

Largest = 12.0 Medium = 7.3 Smallest = 2.5
Linus Gudmundsson:

Seus números construtor só faz nada se o seu value1 (A) é maior ou igual a dos outros dois. Se não for ele vai deixar de pequeno, médio e grande porte em 0.

Edit: Expandindo a resposta aqui como parece mais limpo. Assim, no seu construtor de número

public Numbers(double A, double B, double C)
{



            if(A>=B && A>=C)
            {
                large = A;


            if(B>=C && B<=A)
            {
                medium = B;

                small = C;
            }
            else
            {
                medium = C;
                small = B;
            }

        }

    }

Você só tem uma principal declaração se verificar se um é o maior, eo resto são aninhados dentro dele. Você também precisa de uma instrução if para se B ou C são o maior.

public Numbers(double A, double B, double C)
{

  if(A>=B && A>=C)
  {
    large = A;


    if(B>=C && B<=A)
    {
      medium = B;

      small = C;
    }
    else
    {
      medium = C;
      small = B;
    }

  } else if if(B>=A && B>=C)
  {
    //B is the largest, add code to determine medium and small as you did before
  } else {
    //C is the largest, add code to determine medium and small as you did before
  }

}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=330611&siteId=1
Recomendado
Clasificación