Operator trjargumentowy

0

Witam. Piszę sobie prosty program, który ma zamienić liczby na ich reprezentację binarną. Zadanie pochodzi z Thinking in Java i w treści autor pisze, aby użyć operatora trójargumentowego. Więc chciałem sobie przećwiczyć jego użycie. Napisałem coś takiego:

static int zamien (int x) {
		
	int j = 8;
	int[] tab = new int[8];
		
	for (int i = 0; i < 8; i++, j--) {
			
		((x % 2) == 0) ? tab[j] = 0 : tab[j] = 1;
		x = x / 2;
			
		}
	}

I podkreśla mi linijkę

((x % 2) == 0) ? tab[j] = 0 : tab[j] = 1; 

i pisze: "the left-hand side of an assignment must be a variable". Czemu to nie działa? Przecież ten operator to tak jakby skrócona wersja if else. A przykładowo wyrażenie: if ((x % 2) == 0)

 itd. jest ok.
1
tab[j] = ((x % 2) == 0) ? 0:1;

Spróbuj tak (tab[j] to lewa strona, a nie ((x % 2) == 0) jak zapewne myślałeś).

0

Ok zamieniłem na coś takiego i działa poprawnie:

public class Glowna {
	
	static void zamien (int x) {
		
		int j = 7;
		int[] tab = new int[8];
		
		for (int i = 0; i < 8; i++, j--) {
			
			tab[j] = ((x % 2) == 0) ? 0:1;
			
			x = x / 2;	
		}
		
		for (int y = 0; y < 8; y++) {
			
			System.out.print(tab[y]);
			
		}

	}

	public static void main(String[] args) {

		zamien(10);
	}

}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1