Quando si avvia un letterale intero con 0
, è considerato un ottale numero, uno che usa base 8 anziché base 10. Ciò significa 8
e 9
non sono cifre valide.
Se davvero desidera uno zero (vale a dire, ottale), si avrebbe bisogno di qualcosa di simile a:
int[] monthValidDosInputs = {000, 001, ..., 007, 010, 011, 012, 013, 014};
che i numeri decimali 0
attraverso 12
, ma in ottale dà.
Tuttavia, se si desidera mantenere uniformemente distanziate con decimali, basta usare uno spazio iniziale invece di zero:
int[] monthValidDosInputs = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
// ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
anche se non sono sicuro che si guadagna nulla da questo. Si può anche usare:
int[] monthValidDosInputs = {0,1,2,3,4,5,6,7,8,9,10,11,12};
e si deve fare. Non fa alcuna differenza per il compilatore.
Se stai cercando di utilizzare questi per controllare l'input dell'utente (dove possono entrare 8
o 08
per un mese), è meglio uno:
- utilizzando stringhe di controllare contro ; oppure
- riducendo il proprio input a un numero intero (utilizzando qualcosa come
Integer.parseInt(str,10)
) in modo che non ci siano differenze tra 04
e 4
.
Non si desidera memorizzare numeri ma stringhe. Usa 'String []' e aggiungi le virgolette attorno ai tuoi valori letterali. –
Stai dicendo di utilizzare le stringhe per memorizzare tutti i valori? 00-12? – ewbrowning
Questo funziona ... ma c'è un modo per rappresentare sia gli 08 che i 09 come ints? – ewbrowning