Ακολουθεί ένα απόσπασμα κώδικα,
int a = 1;
char b = (char) a;
System.out.println(b);
Αλλά αυτό που παίρνω είναι κενή έξοδος.
int a = '1';
char b = (char) a;
System.out.println(b);
Θα πάρω 1 ως έξοδο.
Μπορεί κάποιος να το εξηγήσει αυτό; Και αν θέλω να μετατρέψω ένα int σε char όπως στο πρώτο απόσπασμα, τι πρέπει να κάνω;
int a = 1;
char b = (char) a;
System.out.println(b);
θα εκτυπώσει τον χαρακτήρα με τιμή ascii 1 (χαρακτήρας αρχής της επικεφαλίδας, ο οποίος δεν είναι εκτυπώσιμος).
int a = '1';
char b = (char) a;
System.out.println(b);
θα εκτυπώσει το char με τιμή ascii 49 (που αντιστοιχεί στο '1')
Αν θέλετε να μετατρέψετε ένα ψηφίο (0-9), μπορείτε να προσθέσετε 48 σε αυτό και να το ρίξετε, ή κάτι σαν Character.forDigit(a, 10);
.
Αν θέλετε να μετατρέψετε ένα int
ως τιμή ascii, μπορείτε να χρησιμοποιήσετε Character.toChars(48)
για παράδειγμα.
int a = 1;
char b = (char) a;
System.out.println(b);
hola, λοιπόν πέρασα το ίδιο πρόβλημα αλλά αυτό που έκανα ήταν ο παρακάτω κώδικας.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Με αυτό παίρνετε τη δεκαδική τιμή ως τύπο char. Χρησιμοποίησα την charAt() με δείκτη 0 επειδή η μόνη τιμή σε αυτό το String είναι το 'a' και όπως ξέρετε, η θέση του 'a' σε αυτό το String ξεκινάει από το 0.
Συγγνώμη αν τα αγγλικά μου δεν εξηγούνται καλά, ελπίζω να σας βοηθήσω.
Στη java ένα char είναι ένα int. Το πρώτο σας απόσπασμα εκτυπώνει τον χαρακτήρα που αντιστοιχεί στην τιμή 1 στο προεπιλεγμένο σχήμα κωδικοποίησης χαρακτήρων (που είναι πιθανώς Unicode). Ο χαρακτήρας Unicode U+0001 είναι ένας μη εκτυπωτικός χαρακτήρας, γι' αυτό και δεν βλέπετε καμία έξοδο.
Αν θέλετε να εκτυπώσετε τον χαρακτήρα '1', μπορείτε να αναζητήσετε την τιμή του '1' στο σχήμα κωδικοποίησης που χρησιμοποιείτε. Στο Unicode αυτή είναι 49 (η ίδια με την ASCII). Αλλά αυτό θα λειτουργήσει μόνο για τα ψηφία 0-9.
Ίσως είναι καλύτερα να χρησιμοποιήσετε ένα String αντί για ένα char και να χρησιμοποιήσετε την ενσωματωμένη μέθοδο toString()
της Java:
int a = 1;
String b = toString(a);
System.out.println(b);
Αυτό θα λειτουργήσει ανεξάρτητα από την κωδικοποίηση του συστήματός σας, και θα λειτουργήσει για πολυψήφιους αριθμούς.