Java >> Java tutorial >  >> Tag >> boolean

Hvordan opretter man et tegn[] ved hjælp af data fra et boolsk array?

Dit problem er, at du ikke har anførselstegn omkring 1 og 0 .

for (int i = 0; i < n; i++) {
    if (nums[i]) {
        digits[i] = '1';
    }
    else {
        digits[i] = '0';
    }
}

Uden anførselstegnene er de castet fra int s til char s. 0 er faktisk nul-tegnet (NUL ), og 1 er start på overskrift eller sådan noget. Java-tegn kodes ved hjælp af UTF-16 (de er 16 bit lange). Tegnene '0' og '1' er faktisk kodet med henholdsvis 48 og 49 (i decimal).

EDIT:Se faktisk ikke på ASCII-tabellen, se på Unicode-tegnsættet. Unicode er virkelig et supersæt af ASCII, men det vil sandsynligvis være mere nyttigt end ascii-tabellen


Ifølge primitive datatyper i Sproggrundlæggende lektion af sporet Lær Java-sproget i Oracles Java-øvelser:

Tegndatatypen er et enkelt 16-bit Unicode-tegn. Den har en minimumsværdi på '\u0000' (eller 0) og en maksimumværdi på '\uffff' (eller 65.535 inklusive).

Unicode-værdi 0 (nul) er et ikke-udskrivende tegn, ligesom unicode-værdi 1 (én). Det er derfor, du ikke ser noget udskrevet. Skift enten digits til en int array eller fyld den med bogstaver som f.eks. '0' eller '1'

Hvis du bruger int array, vil følgende kode være tilstrækkelig:

int[] digits = new int[n];
for (int i=0; i<n; i++) {
    if (nums[i]) {
        digits[i] = 1;
    }
}

for (int k=0; k<n; k++) {
    System.out.print (digits[k]);
}

Bemærk, at en int array er implicit initialiseret, således at alle elementer initialt er 0 (nul).


Du kan konvertere sådan her:

    public static void main(String[] args) {
        int n = 5;
        boolean[] nums = { true, false, true, false, true };
        char[] digits = new char[n];
        for (int i = 0; i < n; i++) {
            digits[i] = nums[i] ? '1' : '0';
        }
    }

Java tag