К основному контенту

Java Web Programming в EPAM

Поступила я на курсы с большими амбициями и с ощущением наличия у меня кое-каких знаний. но первое же практическое занятие в EPAM разубедило меня полностью в том что я хоть что-то знаю. в общем, учиться, учиться и еще раз, учиться.
с консолью никогда не работала, с переводом систем счисления никогда даже не имела дела, даже не пыталась, а стоило бы. с пакетами столкнулась впервые. 5 задача работает у меня малех на костылях, о стройности решения тут и речи не идет. мною руководила одна мысль - лишь бы написать и оно заработало. 
Выкладываю частично интересные задания:

  1. Написать класс, который реализует функциональность вывода в консоль строки "Hello, World". Написать командный файл (bat файл Windows или shell скрипт Linux), который компилирует и запускает данное приложение из консоли. Командный файл сохранить в каталоге src Eclipse-проекта.
  2. Написать класс, который реализует функциональность сложения двух чисел, переданных в приложение как параметры командной строки.
  3. Написать класс, который реализует функциональность определения наибольшего общего делителя двух целых положительных чисел, переданных в приложение как параметры командной строки.
  4. Написать класс, который реализует функциональность определения суммы цифры целого положительного числа, переданного в приложение как параметр командной строки.
  5. Как правило колонки электронных таблиц (например, Excel) имеют буквенную нумерацию в виде больших букв латинского алфавита (последовательно, слева направо): A, B, ..., Y, Z, AA, AB, ..., AY, AZ, BA, BB, ... и т.д. В то же время каждая колонка имеет порядковый номер: A - 1; B - 2; ... ; Y - 25; Z - 26; AA - 27; AB - 28; ... и т.д. Написать класс, который содержит следующие три метода (названия не обязательно должны быть такими, какими они приведены ниже):
    1. метод определения порядкового номера колонки по ее буквенному номеру
      public static int chars2digits(String number): A => 1; B => 2; ...; Z => 26; AA => 27; AB => 28; ... ];
    2. метод определения буквенного номера колонки по ее порядковому номеру
       [ public static String digits2chars(int number): 1 => A; 2 => B; ...; 26 => Z; 27 ==> AA; 28 ==> AB; ... ];
    3. метод определения по буквенному номеру колонки номер колонки, которая находится справа от данной
       [ public static String rightColumn(String number): A => B; B => C; ...; Y => Z; Z => AA; AA => AB; ...].
Дополнительно в корневой пакет положить класс Demo, который демонстрирует работу всех 5 подзадач. 

package ua.nure.sakhno.Practice1;

public class Demo {
public static void main(String[] args) {
Part1.main(new String[] {});
System.out.println("*********************");
Part2.main(new String[] {"2", "3"});
System.out.println("**********************");
Part3.main(new String[] {"2", "3"});
System.out.println("**********************");
Part4.main(new String[] {"55555"});
System.out.println("**********************");
Part5.main(new String[] {"28", "AA", "ZZZ"});
}

}

/*
 * Написать класс, который реализует функциональность вывода в консоль строки "Hello, World". 
 * Написать командный файл (bat файл Windows или shell скрипт Linux), 
 * который компилирует и запускает данное приложение из консоли. Командный файл сохранить в каталоге src Eclipse-проекта.
 */
package ua.nure.sakhno.Practice1;

public class Part1 {
public static void main(String[] args) {
System.out.println("Hello, World");
}

}
/*
 * Написать класс, который реализует функциональность сложения двух чисел, переданных в приложение как параметры командной строки.
 */
package ua.nure.sakhno.Practice1;

public class Part2 {

public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
System.out.println("x + y = " + x + y);
}

}
/*
 * Написать класс, который реализует функциональность определения наибольшего общего делителя двух целых 
 * положительных чисел, переданных в приложение как параметры командной строки.
 */
package ua.nure.sakhno.Practice1;

public class Part3 {

public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
System.out.print("NOD " + x + " and " + y + " = ");
while (y != 0) {
int tmp = x % y;
x = y;
y = tmp;
}
System.out.println(x);
}

}
/*
 * Написать класс, который реализует функциональность определения суммы цифры целого положительного числа, 
 * переданного в приложение как параметр командной строки.
 */
package ua.nure.sakhno.Practice1;

public class Part4 {
public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
int sum = 0;
System.out.println("Number:" + x);
while (x != 0) {
sum += x % 10;
x /= 10;
}
System.out.println(sum);
}
}
/*
 * Как правило колонки электронных таблиц (например, Excel) имеют буквенную нумерацию в виде больших букв 
 * латинского алфавита (последовательно, слева направо): A, B, ..., Y, Z, AA, AB, ..., AY, AZ, BA, BB, ... 
 * и т.д. В то же время каждая колонка имеет порядковый номер: A - 1; B - 2; ... ; Y - 25; Z - 26; AA - 27;
 *  AB - 28; ... и т.д. Написать класс, который содержит следующие три метода (названия не обязательно 
 *  должны быть такими, какими они приведены ниже):
метод определения порядкового номера колонки по ее буквенному номеру
[ public static int chars2digits(String number): A => 1; B => 2; ...; Z => 26; AA => 27; AB => 28; ... ];
метод определения буквенного номера колонки по ее порядковому номеру
 [ public static String digits2chars(int number): 1 => A; 2 => B; ...; 26 => Z; 27 ==> AA; 28 ==> AB; ... ];
метод определения по буквенному номеру колонки номер колонки, которая находится справа от данной
 [ public static String rightColumn(String number): A => B; B => C; ...; Y => Z; Z => AA; AA => AB; ...].
 */
package ua.nure.sakhno.Practice1;

public class Part5 {

public static int chars2digits(String number) {
int digit = 0;
for (int i = number.length(); i > 0; i--) {
digit += (int) (number.charAt(number.length() - i) - 64)
* Math.pow(26, number.length() - i);
}
return digit;
}

public static String digits2chars(int number) {
String chars = "";
String charsMirror = "";
int modul;
int divident = number;
while (divident != 0) {
modul = divident % 26;
if (modul == 0) {
chars += "Z";
divident = (divident - 1) / 26;
} else {
chars += (char) (modul + 64);
divident = (divident - modul) / 26;
}
}
for (int i = 0; i < chars.length(); i++)
charsMirror += chars.charAt(chars.length() - i - 1);
return charsMirror;

}

public static String rightColumn(String number) {
String chars = "";
int num;
num = chars2digits(number);
num++;
chars = digits2chars(num);
return chars;
}

public static void main(String[] args) {
int digit1 = Integer.parseInt(args[0]);
String char1 = String.valueOf(args[1]);
String char2 = String.valueOf(args[2]);
System.out.println(char1 + " --> " + Part5.chars2digits(char1));
System.out.println(digit1 + " --> " + Part5.digits2chars(digit1));
System.out.println(char2 + " --> " + Part5.rightColumn(char2));
}

}


Комментарии

  1. Спс за код кое в чем помог! Жалко только что bat файл не выкинули.

    ОтветитьУдалить
  2. Там в 5 задании, неправильно работает первый метод(точнее цикл)
    for(int i = 1, j = number.length(); j > 0; i++,j--){

    count += (int)(number.charAt(number.length() - i) -64) * Math.pow(26,number.length() - j);

    }

    ОтветитьУдалить
  3. да, действительно, как верно подмечено выше в тексте в методе ошибка

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Прата С. Решение задач 6 главы

На решение этих задач у меня ушло 2 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

Прата С. решение задач 5 главы

Эта глава по циклам меня удивила. я  с неким пренебрежением отнеслась к ней, т.к. думала что и так все знаю по этой теме. но Прата так глубоко и в подробностях объяснил тему, что я заново переосмыслила циклы и выражения. было очень много интересных подробностей, которые мне никто не мог толком объяснить. и кстати, парочка задач была над которыми я поломала голову. особенно понравился такой акцент на указателях. как говорится, приучают с малых лет. понять - поняла, но путаюсь в них до сих пор нечеловечески.

Прата С. Решение 3 и 4 главы

Повторюсь, взяла только интересные мне задания, т.е. с элементами того что поняла плохо/не встречала ранее. Сделала за сегодня. с удовольствием отмечаю что сдвиги  в положительную сторону  хотя-бы в стиле есть . в 4 главе ясно объяснено почему при вводе нескольких строк начинаются проблемы, и как этого избежать, подробно описана работа с входным потоком. Как работать со строками стиля Си и класса String, разница. для себя я сделала выводы что лучше всего, конечно-же класс string. намного меньше мороки. и метод ввода getline в обоих случаях. в задачах разница проиллюстрирована. и кстати, указатели больше не вызывают у меня ужаса и трепета. много нового узнала о видах структур. эта глава расставила все по местам в моей голове. правда, зачем в задачи на СР втиснута работа с массивом array - загадка. он ведь толком не объяснен, но понять его интуитивно можно, правда, зачем его использовать не зная тонкостей, как обычный массив с немного иным объявле...