Archivos de datos de lectura

Tristán Remus:

Estoy escribiendo un programa en mi clase de AP de Java y estoy muy confundido. El programa se supone que leer un archivo de datos utilizando otro programa llamado EasyReader. El programa consiste en una clase de objeto que encuentra el mayor número, el número medio y número más pequeño. La clase de prueba se supone que leer el archivo de datos (numbers.bat) que le da un conjunto de números y el programa se supone que debe imprimir el más grande, mediana y pequeña de todas las líneas del archivo de datos. Sin embargo, es la lectura de una sola línea del archivo de datos (la del medio) en lugar de los tres. Se está mostrando

Largest = 7.3 Medium = 5 Smallest = 3.2

Por favor ayuda. ¡Gracias!

Aquí está la clase del objeto:

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;

        }
    }   

Esta es la clase de prueba:

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());
    }


}

Y por último, el archivo de datos (numbers.bat)

4 9 2.5
3.2 5 7.3
12 8.2 9.1 

La salida en este momento:

Largest = 7.3 Medium = 5.0 Smallest = 3.2

El resultado esperado:

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

Sus números constructor sólo se hace nada si su valor 1 (A) es mayor o igual a los otros dos. Si no es que se dejan pequeñas, medianas y grandes a 0.

Editar: Ampliación de la respuesta aquí, ya que se ve más limpio. Así, en su número de constructor

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;
            }

        }

    }

Usted sólo tiene una principal, si la comprobación de la declaración si A es la más grande, y el resto se anidan en ella. También se necesita una sentencia if para si B o C son las más grandes.

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
  }

}

Supongo que te gusta

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