Esta es mi primera pregunta en este sitio, me estoy quedando este en NetBeans 8.0.2 y tratando de imprimir mis definido por el usuario de la matriz, pero que mantiene regresando valores null. Por ejemplo, si usted dice que hay 2 empleados y entrar tanto de sus nombres, devolverá [null, null]

De cómo corregir este error? Yo soy un novato.

import java.util.Scanner;
import java.text.DecimalFormat;
import java.util.Arrays;

class Tips_Calculation2 
{
public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);

    System.out.print("How many employees for the week?: ");
    int numberOfEmps = scan.nextInt();

    //counter for the if statement that should return all employees from the array
    int counter = numberOfEmps;

    int[] nOEarray = new int[numberOfEmps];


    System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");


    for(int i = 1; i <= numberOfEmps; i++)
    {
        String nameCycler = scan.next();
        String[] namesArray = new String[i];

        if(counter == i)
        {
            System.out.println(Arrays.toString(namesArray));
        }
    }
}
}

Caso omiso de importar java.texto.DecimalFormat como voy a utilizar esto de importación más tarde en mi código. Gracias de antemano a todo el que es tipo/lo suficientemente inteligente como para responder.

  • ¿Cuál es el punto de counter como una variable independiente? Sólo uso numberOfEmps, o mejor aún, nOEarray.length.
  • Él dijo: «yo soy un novato», él encontrará que es inútil en el futuro 😉
InformationsquelleAutor Ryan Horner | 2015-08-25

7 Comentarios

  1. 1

    Primero que todo, usted nunca ponga su nameCycler a la matriz. Segundo de todo lo que usted cree su namesArray cada iteración que creo que está mal.

  2. 1

    Está creando una nueva marca (lleno de null) de la matriz de namesArray en cada paso a través del bucle, y luego nunca la asignación de nada. Creo que usted está buscando algo como este lugar. Tenga en cuenta que Java índices de cero, no una sola.

    String[] names = new String[numberOfEmps]
    
    for(int i = 0; i < names.length; i++) {
        names[i] = scanner.next();
    }
    
    System.out.println(Arrays.toString(names));
  3. 1

    Primero de todo, hay que inicializar la matriz fuera de su bucle. En segundo lugar, olvidó poner el nombre a la matriz de valor(s).

    Intente esto:

    import java.util.Scanner;
    import java.text.DecimalFormat;
    import java.util.Arrays;
    
    class Tips_Calculation2 {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
    
            System.out.print("How many employees for the week?: ");
            int numberOfEmps = scan.nextInt();
    
            int[] nOEarray = new int[numberOfEmps];
    
            System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
    
            String[] namesArray = new String[numberOfEmps];
    
            for (int i = 0; i < numberOfEmps; i++) {
                namesArray[i] = scan.next();
            }
            System.out.println(Arrays.toString(namesArray));
        }
    }
  4. 0

    Reemplazar

    for(int i = 1; i <= numberOfEmps; i++)
    {
        String nameCycler = scan.next();
        String[] namesArray = new String[i];
    
        if(counter == i)
        {
            System.out.println(Arrays.toString(namesArray));
        }
    }

    Con

    String[] namesArray = new String[numberOfEmps];
    for(int i = 0; i < numberOfEmps; i++)
    {
        namesArray[i] = scan.next();
    }
    System.out.println(Arrays.toString(namesArray));

    Y ver si funciona.

  5. 0

    Nunca asignar el nombre a la matriz y en cada iteración se define la matriz de nuevo:

     String[] namesArray = new String[numberOfEmps];
     for(int i = 1; i <= numberOfEmps; i++)
        {
            String nameCycler = scan.next();
            namesArray [i] = nameCycler ;
            if(counter == i)
            {
                System.out.println(Arrays.toString(namesArray));
            }
        }
    • Lo siento, por error editado tu respuesta.
  6. 0

    Añadido comentarios en el código para señalar los cambios.

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
    
        System.out.print("How many employees for the week?: ");
        int numberOfEmps = scan.nextInt();
    
        //removed 'nOEarray' and 'counter'
    
        if (numberOfEmps > 0) {
            System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
    
            //initializing 'namesArray' outside for loop.
            String[] namesArray = new String[numberOfEmps];
            for(int i = 0; i < numberOfEmps; i++) { //initialized with 0 and updated condition with '<'
                namesArray[i] = scan.next(); //assigning value to 'i'th position of namesArray
            }
            System.out.println(Arrays.toString(namesArray)); //Printing array outside for loop
        }
    }
    • Garantizado IndexOutOfBoundsException.
    • Volvió a viejo código.
  7. -1

    «De cómo corregir este error» no. Esto no es un error.

     String[] namesArray = new String[i]; //step one, you declare an array of Strings
      //which you don't initialize
    
            if(counter == i)
            {
                System.out.println(Arrays.toString(namesArray));
    //you print all the (non-initialized) elements of namesArray
    //since you didn't initialize the elements, it takes the default value, which is null
            }

    llenar los elementos de la matriz de Cadenas antes de intentar imprimir.

Dejar respuesta

Please enter your comment!
Please enter your name here