Как-нибудь потом напишу, как я докатилась до жизни такой, пока просто: начала изучать программирование с байт-код-языка Java. А так как обычные упражнения выполнять скучно, начала чудить с кодом.
Итак, задача: Составить программу обмена значениями двух переменных величин a=5 и b=7.
Простой код будет выглядеть так:
int a = 5;
int b = 7; //объявляем целочисленные переменные a и b
System.out.println("a=" + a);
System.out.println("b=" + b); //выводим значения переменных на экран
a ^= b;
b ^= a;
a ^= b; //меняем значения переменных друг с другом
System.out.println("a=" + a);
System.out.println("b=" + b); // выводим значения на экран
Почему xor работает так? Пока для меня это магия.
А теперь, собственно, извратим код повеселимся! Копируем в компилятор (я использую кодингграунд) и наслаждаемся/ужасаемся!
public class HelloWorld
{
public static void main(String []args)
{
int a = 5;
int b = 7;
System.out.printf("В этой сказке нет порядка: \nЧто ни строчка - то загадка. \nРасскажу сейчас тебе, \nЖили-были a (равное %d) и b (равное %d). \n \n", a, b);
a ^= b;
b ^= a;
a ^= b;
System.out.printf("Жили-были, не скучали, \nНо потом один урод \nИм значенья переставил, \nТут же наши числа стали \na и b наоборот! \n \nПосмотрите-ка, друзья! \nВот вам b (равное %d)! А вот вам a (равное %d)! \n", b, a);
}
}
Ну и разбор задачки на присвоение значения трех переменных с объявлением дополнительной.
Составить программу обмена значениями трех переменных величин а = 2, b = 3, c = 1 по следующей схеме:
а) b присвоить значение c, а присвоить значение b, с присвоить значение а;
б) b присвоить значение а, с присвоить значение b, а присвоить значение с.
public class HelloWorld
{
public static void main(String []args)
{
int a = 2;
int b = 3;
int c = 1; //создаем целочисленные переменные
System.out.printf("a = %d; \nb = %d; \nc = %d; \n", a, b, c); //выводим их значения на экран
System.out.println("\n"); //вставляем пустую строку
System.out.println("b присвоить значение c, а присвоить значение b, с присвоить значение а"); //выводим на экран задание
int num = b; //вводим дополнительную переменную num для значения b
b = c; //присваиваем значение с уже существующей переменной b
c = a; //присваиваем значение a уже существующей переменной с
a = num; // присваиваем значение num, равное изначальному значению b уже существующей переменной a
System.out.printf("a = %d; \nb = %d; \nc = %d; \n", a, b, c); //выводим на экран значения переменных с изменёнными значениями
System.out.println("\n");
System.out.println("b присвоить значение а, с присвоить значение b, а присвоить значение с");
num = b;
b = a;
a = c;
c = num;
System.out.printf("a = %d; \nb = %d; \nc = %d; \n", a, b, c);
System.out.println("\n");
System.out.printf("Боги Java требуют жертвы: присвойте переменным a, b, c соответственно значения c, a, b.");
}
}
Слава Богам Java!
До новых встреч!