2015-12-24 5 views
6

Sono un principiante Java e anche nuovo in questo sito. Sto imparando sugli array e metodi e purtroppo mi sono bloccato La domanda è:Studio Java College

Un ospedale ha spazio per 150 pazienti. Ogni camera ha uno spazio per 3 pazienti.
L'ospedale fa pagare a un paziente $ 150 per rimanere. Se ogni stanza è occupata da 3 pazienti, , l'ospedale paga altri $ 50. Richiede all'utente il numero di pazienti e visualizza il numero totale di pazienti, importo totale totale di tutte le spese.

A mio parere, vorrei creare un array parallelo del numero di stanze e un altro numero di pazienti per ogni stanza.

Il problema è: ogni volta che il programma richiede quanto segue. Inserisci # dei pazienti per stanza 0 Inserisci # dei pazienti per stanza 0 Inserisci # dei pazienti per stanza 0 Invece di: Inserisci # dei pazienti per stanza # 1 Inserire # dei pazienti per stanza # 2 Inserisci ° pazienti per stanza # 3

Quindi credo che sia un errore logico perché roomNumbers [i] non viene aggiornato alla stanza 1, room2, ecc richiede solo la stanza 0 tutto il tempo, per favore ogni consiglio è benvenuto come sto appena iniziando questo nuovo corso per il prossimo semestre. La mia logica ha senso? Grazie mille.

import javax.swing.JOptionPane; 

public class Pingo { 
    public static void main(String[] args) { 
     final int MAXROOMS=50; 
     int[] roomNumbers = new int[MAXROOMS]; 
     int [] patientQuantity = new int [roomNumbers.length]; 
     int numPatients=getNumberOfPatients(roomNumbers,patientQuantity); 
    } 


    public static int getNumberOfPatients(int[] roomNumbers, int []patientQuantity){ 
     int numPatients=0; 

     for(int i=0; i<patientQuantity.length; i++){ 
      numPatients=Integer.parseInt(JOptionPane.showInputDialog("Enter amount of Patients for room:" 
        + roomNumbers[i])); 
      patientQuantity[i]=numPatients;          
     } 
     return numPatients; 
    }          
} 
+0

Benvenuti nella comunità SO! Si prega di fare una domanda più specifica. StackOverflow non è pensato per essere un sito di risoluzione HW; invece di chiedere "Cosa sto facendo di sbagliato?", chiedi con cosa possiamo aiutarti. –

+1

Oltre a migliorare il testo di questa domanda, ti consiglio anche di provare a migliorare la formattazione del tuo codice che pubblichi qui e il tuo codice in generale. Una buona formattazione, compreso l'utilizzo di uno stile di indentazione uniforme e coerente, aiuterà gli altri (** us **!) per capire meglio il tuo codice e, cosa più importante, ti aiuterà ** a ** a capire meglio il tuo codice e quindi a correggere i tuoi bug. Mostra anche che sei disposto a fare uno sforzo extra per rendere più facile per i volontari qui per aiutarti, e questo sforzo è ** molto ** apprezzato. –

+3

Questa volta ho provato a indentare il codice per te, ma in futuro, ti preghiamo di farlo per noi. –

risposta

5

Il problema è qui:

int[] roomNumbers = new int[MAXROOMS]; 

Voi dichiarando un array e inizializzazione. Il problema è che i valori nella matrice sono tutti zero. Questo perché quando si alloca un array utilizzando new i valori degli elementi saranno default Sm_avatar inizializzato secondo la BaseType matrice:

  • tipi numerici hanno un valore iniziale predefinito di zero.
  • Il tipo bool ha un valore iniziale predefinito di false.
  • I tipi di riferimento (classi e tipi di array) hanno un valore iniziale predefinito di null.

Ci sono due soluzioni semplici qui:

  • valori iniziali impostati per ogni elemento dell'array; per esempio. usando un ciclo.
  • Non utilizzare una matrice per contenere i numeri delle stanze; per esempio. fai qualche semplice aritmetica e usa la tua variabile indice (i) per calcolare il numero della camera. (Pensaci ...)
Problemi correlati