Problema al calcular el rango de una matriz poblada (Java)

Actualmente estoy haciendo una tarea para mi curso de acceso en informática. A continuación he capturado el proyecto para contextos. Nuestro maestro nos dio fragmentos de codificación para comenzar. En este caso, nos dio un código que llena 2 matrices de un usuario. He escrito código que encuentra el número más pequeño en la matriz (para calcular el rango) y funciona. Como se muestra abajo...

Contexto: https://i.imgur.com/sReC8ym.png

public static void main(String[] args) {
    double[] values = {81, 52, 10, 50, 18, 4, 7};
    double smallest = values[0];
    for (int i = 0; i < values.length; i++) {
        if (values[i] < smallest) {
            smallest = values[i];

        }
    }
    System.out.println(smallest);
}

Sin embargo, cuando implemento este código en mi proyecto, el resultado siempre es 0. Creo que el problema radica en el código de fragmento. La función que encuentra el número más alto funciona dentro del proyecto. Encontrar el número más alto y someter el número más pequeño funciona, sin embargo, el resultado del número más pequeño siempre es 0. He pegado todo el programa a continuación. Lo siento si es demasiado trabajo para arreglar, ¿tienes algún consejo? Gracias

public static String[] strings;
public static double[] data;

public static void main(String[] args) {

    populatArrays();
    printArrays(strings, data);
    double theAverage = calculateAverage(data);
    System.out.println("The average rainfall is " + theAverage);
    double largest = getLargest(data);
    System.out.println("The largest amount of rainfall is " + largest);
    double smallest = getSmallest(data);
    System.out.println("The smallest amount of rainfall is " + smallest);
    double theRange = getRange(data);
    System.out.println("The rainfall range is " + theRange);
    double theTotal = getTotal(data);
    System.out.println("The total rainfall is " + theTotal);
}

//User input for the array & printing out questions
public static void populatArrays() {

    Scanner input = new Scanner(System.in);
    System.out.println("How many cities would you like to add to the Rainfall calculator?");
    int elements = input.nextInt();
    String[] someStrings = new String[elements];
    double[] someData = new double[elements];

    for (int i = 0; i < someData.length; i++) {
        input = new Scanner(System.in);
        System.out.println("Enter a City");
        someStrings[i] = input.nextLine();
        System.out.println("Enter the annual rainfall");
        someData[i] = input.nextDouble();
    }
    strings = someStrings;
    data = someData;
}

//code printing out the array on screen
public static void printArrays(String[] stringArray, double[] doubleArray) {

    for (int i = 0; i < stringArray.length; i++) {
        System.out.println("City: " + stringArray[i]);
        System.out.println(doubleArray[i] + "mm");

    }
}

//code calculating the mean average
public static double calculateAverage(double[] thenumbers) {

    double sum = 0;
    for (double thenumber : thenumbers) {
        sum += thenumber;
    }

    double result = sum / thenumbers.length;
    return result;

}

//code calculating the largest number in the array
public static double getLargest(double[] thenumbers) {

    double largest = 0;

    for (int i = 0; i < thenumbers.length; i++) {
        if (thenumbers[i] > largest) {
            largest = thenumbers[i];
        }
    }

    return largest;
}

//code calculating the smallest number in the array
public static double getSmallest(double[] thenumbers) {

    double smallest = 0;

    for (int i = 0; i < thenumbers.length; i++) {
        if (thenumbers[i] < smallest) {
            smallest = thenumbers[i];
        }
    }

    return smallest;
}

// code calculating the range
public static double getRange(double[] thenumbers) {

    double largest = getLargest(data);
    double smallest = getSmallest(data);

    double theRange = largest + smallest;

    return theRange;

}

// code calculating the total rainfall in the array
public static double getTotal(double[] thenumbers) {

    double sum = 0;
    for (double thenumber : thenumbers) {
        sum += thenumber;
    }
    double theTotal = sum;
    return theTotal;

}

}

Respuesta 1

Está configurando el valor inicial de menor a 0

Como ninguno de los datos es menor que 0, el más pequeño nunca se establece en otro número.

En lugar de establecer el valor en cero, sugeriría hacer lo mismo que en su fragmento original y establecerlo en el primer valor de la matriz

double smallest = thenumbers[0];

También está haciendo lo mismo en su función getLargest, por lo que si el número más alto en su lista es negativo, devolverá 0.

Como beneficio adicional, también puede condensar un poco su código utilizando el operador for in / each :

//code calculating the smallest number in the array
public static double getSmallest(double[] thenumbers) {

  double smallest = thenumbers[0];

  for (double num : thenumbers) {
    if (num < smallest) {
      smallest = num;
    }
  }

  return smallest;
}
Respuesta: 2

Digamos que tengo una clase con tres constructores, como el siguiente: public class ExampleClass {// constructor # 1 public ExampleClass (int a) {this (a, "aaa"); // "aaa" es solo un ...

Tengo un directorio de archivos de registro comprimidos basados ​​en texto, cada uno con muchos registros. En versiones anteriores de Hadoop, ampliaba MultiFileInputFormat para devolver un RecordReader personalizado que descomprimía ...

Estoy tratando de enumerar todos los archivos * .xml en el directorio. Primero hice un CD y luego intenté ejecutar: find. -type f -name * .xml Pero no estoy seguro de cómo hacerlo exactamente. Hubo algún ejemplo alrededor del ...

¿Es posible ver la lista completa de la pila de llamadas para un método dado en mi aplicación usando alguna herramienta? Quiero ver el resultado similar que puedo ver en JProfiler para un método dado. Sin embargo, yo ...