2016-03-31 19 views
-1

Was ich versuche zu tunWie kann ich ein Array Position drucken

Abwesenheiten: fehlend ein Array erstellen, die den Überblick über die Zahl der Mitarbeiter hält, die jeden Tag waren; Es sollte groß genug sein, um einen vollen Monat an Daten zu speichern. Zum Beispiel war am ersten Tag des Monats 1 Mitarbeiter abwesend; am zweiten Tag waren 0 Angestellte abwesend; 3 Abwesenheiten am dritten Tag; und schließlich am letzten Tag des Monats gab es 2 Abwesenheiten. Diese Daten müssen NICHT vom Benutzer eingegeben werden.

Aufforderung an den Benutzer, eine Nummer einzugeben; zeigt die Anzahl der Fehlzeiten am Tag sie

eingegeben

was ich habe:

package absences; 

import java.util.Scanner; 

/** 
* 
* @author Matthew 
*/ 
public class Absences { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     System.out.println("Enter the date."); 

     int a = keyboard.next().charAt(0); 


     int[] mArray; 

     mArray = new int[32]; 

     mArray[0] = 0; 
     mArray[1] = 1; 
     mArray[2] = 0; 
     mArray[3] = 3; 
     mArray[4] = 0; 
     mArray[5] = 2; 
     mArray[6] = 1; 
     mArray[7] = 0; 
     mArray[8] = 0; 
     mArray[9] = 0; 
     mArray[10] = 0; 
     mArray[11] = 0; 
     mArray[12] = 0; 
     mArray[13] = 0; 
     mArray[14] = 0; 
     mArray[15] = 0; 
     mArray[16] = 0; 
     mArray[17] = 0; 
     mArray[18] = 0; 
     mArray[19] = 0; 
     mArray[20] = 0; 
     mArray[21] = 0; 
     mArray[22] = 0; 
     mArray[23] = 0; 
     mArray[24] = 0; 
     mArray[25] = 0; 
     mArray[26] = 0; 
     mArray[27] = 0; 
     mArray[28] = 0; 
     mArray[29] = 0; 
     mArray[30] = 0; 
     mArray[31] = 2; 

     System.out.println("On the Date " + a + "has " + + " absences"); 
+2

und was blockiert Sie? – njzk2

+0

Persönlich würde ich eine MAP verwenden –

+0

Sie können alle Array-Elemente auf einmal wie diese mArray = {0, 1, 0, 3 ...} – Natecat

Antwort

0

Nur noch eine Sache. Die vorherigen Antworten, Array-gebundene Überprüfung scheint gut und sollte das Problem lösen. Allerdings nur noch eine Sache. Die von Ihnen verwendete Methode:

int a = keyboard.next(). CharAt (0);

Nach meinem Verständnis wird es nur das erste Zeichen aus der Zeichenfolge, sagen, wenn die Eingabe des Datums ist '23', wird es nur '2' nehmen. Daher werden alle Indexwerte, die Sie vom Benutzer erhalten, nur einstellig sein. Ich überprüfte Java-API, nicht sicher, ob dies stattdessen nützlich sein kann.

int a = Tastatur.nextInt();

Bitte lassen Sie mich auch wissen, ich versuche, ein besseres Verständnis zu bekommen.

+0

ja das hat eines der Probleme behoben danke! –

0

First off Sie Ihre Array-Elemente mit einer Array-Liste erklären können wie so:

mArray = {0,0,0,20,0,2,20};//fill with your values 

Beim Drucken aus die Anzahl der Abwesenheiten an dem Tag, an dem der Benutzer eingibt, zuerst prüfen, ob die Zahl außerhalb der Grenzen liegt

Sie müssen die Eingabe überprüfen, bevor Sie diese Eingabe aufrufen, um OutOfBoundsExceptions zu verhindern, die Ihr Programm zum Absturz bringen.

0
System.out.println("On the Date " + a + "has " + mArray[a] + " absences"); 

Dies ist die direkte Antwort auf Ihre Frage. Wie im vorherigen Post vorgeschlagen, sollten Sie einen Grenztest durchführen.

0

Ich persönlich würde die folgenden Änderungen vorschlagen. Sie können die Erstellung des Arrays vereinfachen, Sie müssen mit einer while-Schleife nach ungültigen Ganzzahlen suchen (und erneut versuchen, bis es erfolgreich ist) oder (anstelle einer while-Schleife) einen try-catch-Block hinzufügen und auf den Wert zugreifen dass sie aus dem Array suchen nach

mArray[a]. 

der folgende Code verwendet diese Vorschläge verwenden, und modifiziert es eine Weile Schleife mit dem ArrayIndexOutOfBoundsException beschäftigen, die ausgelöst werden könnte. Dies kann entfernt oder bei Bedarf durch einen Try-Catch ersetzt werden.

package absences; 

import java.util.Scanner; 

/** 
* 
* @author Matthew 
*/ 
public class Absences { 

    public static void main(String[] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 
     int a = -1; 

     System.out.println("Enter the date."); 

     while (a < 0 || a > 31) 
     { 
      try 
      { 
       a = keyboard.nextInt(); 
      } catch (InputMismatchException e) { 
       sc.next(); 
      } 
      if (a < 0 || a > 31) 
       System.out.println("Invalid date, try again!"); 
     } 

     int[] mArray = {0,1,0,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2} 

     System.out.println("On the Date " + a + "has " + mArray[a] + " absences"); 
    } 
} 

Auch Matthew weist richtig darauf hin, dass es keine Monate mit 32 Tagen gibt. Wenn Sie sich mit Daten und Zeiten befassen, schlage ich vor, dass Sie entweder in den Kalender oder die Zeit-Klassen schauen.

Bearbeiten: Ich habe meinen Code geändert, wie ich die Tatsache übersehen, dass Ihre Methode der Int-Eingabe nicht funktionieren würde, wie von Preyas Shah in ihrer Antwort richtig gezeigt.

+0

Vielen Dank für Ihre Hilfe! Auch was, wenn ich auch alle Int im mArray zeigen müsste? –

+0

n/m Ich habe es gefunden. System.out.println ("Die Werte des Arrays sind" + Arrays.toString (n)); –

+0

@Matthew Hunt Wenn dies die Lösung ist, nach der Sie gesucht haben, wäre eine positive Bewertung oder ein Tick dankbar. Ich bin froh, dass ich geholfen habe. –

Verwandte Themen