2014-04-22 7 views
5

Wie kann ich 08 und 09 in einem int-Array speichern? Ich verstehe, dass sie nicht aufgrund binärer Eigenschaften und haben beide versucht ...Java: Verwenden von "08" und "09" in einem Array

0b08, 0b09 ... und ... 0B08, 0B09 ohne Glück.

Die folgende Codezeile ist ideal, was ich haben möchte:

final int[] monthValidDosInputs = {00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12}; 

Hier ist der Fehler ...

ConvertDate.java:15: error: integer number too large: 08 
ConvertDate.java:15: error: integer number too large: 09 

Dank!

+2

Sie möchten keine Zahlen, sondern Zeichenketten speichern. Verwenden Sie 'String []' und fügen Sie Anführungszeichen um Ihre Literale ein. –

+0

Sie sagen, verwenden Sie Strings, um alle Werte zu speichern? 00-12? – ewbrowning

+0

Das funktioniert ... aber gibt es eine Möglichkeit, 08 und 09 als Ints darzustellen? – ewbrowning

Antwort

12

Wenn Sie eine wörtliche ganze Zahl mit 0 beginnen, ist es ein Oktal Zahl, eine, die Basis 10 8 eher als Basis verwendet gangen, dass 8 und 9 sind keine gültigen Ziffern bedeutet.

Wenn Sie wirklich wollen eine führende Null (das heißt, Oktal), Sie möchten, dass etwas brauchen:

int[] monthValidDosInputs = {000, 001, ..., 007, 010, 011, 012, 013, 014}; 

dem Sie die Dezimalzahlen 0 durch 12, aber in Oktal gibt.

Wenn Sie jedoch wollen, dass sie halten gleichmäßig mit dezimal Abstand, nur einen führenden Platz anstelle von Null:

int[] monthValidDosInputs = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 
//       ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 

obwohl ich nicht sicher bin, Sie etwas von dem gewinnen. Sie können auch nur verwenden:

int[] monthValidDosInputs = {0,1,2,3,4,5,6,7,8,9,10,11,12}; 

und damit erledigt werden. Es macht keinen Unterschied für den Compiler.


Wenn Sie suchen, diese verwenden Benutzereingaben überprüfen (wo sie 8 oder 08 für einen Monat eingeben können), sind Sie besser dran entweder:

  • Strings gegen prüfen ; oder
  • reduziert ihre Eingabe auf eine ganze Zahl (mit etwas wie Integer.parseInt(str,10)), so dass es keinen Unterschied zwischen 04 und 4 gibt.
+0

@assylias, Ja, du hast Recht, ich habe die Oktalwerte so geändert, dass sie alle eine führende Null haben. Mein Fehler. – paxdiablo

0

dystroy ist richtig, speichern sie als Zeichenfolgen in einem Array String[] und sie dann zu int analysieren, wenn man sie als ganze Zahlen verwenden möchten.

0

Es gibt keine Möglichkeit, dass ich weiß, dass Sie diese Werte in und int [] Array halten können. Verwenden Sie stattdessen das Array String [] und konvertieren Sie sie bei Bedarf in int-Werte.

Verwandte Themen