Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
DarkDS
Дата 16.8.2004, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



А length и ++ пользовать можно?

Это сообщение отредактировал(а) DarkDS - 16.8.2004, 15:59
PM MAIL   Вверх
Domestic Cat
Дата 16.8.2004, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Можно:

=, ++, length()

smile.gif




--------------------

PM   Вверх
DarkDS
Дата 16.8.2004, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



a)
Код

StringBuffer buffer = new StringBuffer("The Java Programming Language");
for ( int i = 0; (i ^ buffer.length()) != 0; i++ )
{
if ( (buffer.charAt(i)&32) != 0 )
 if ( (buffer.charAt(i)&~32) != 0 )
  buffer.setCharAt( i, (char)(buffer.charAt(i)&~32) );
}
System.out.println(buffer);

b)
Код

StringBuffer buffer = new StringBuffer("The Java Programming Language");
for ( int i = 0; (i ^ buffer.length()) != 0; i++ )
{
if ( (buffer.charAt(i)&~32) != 0 )
 buffer.setCharAt( i, (char)(buffer.charAt(i)|32) );
}
System.out.println(buffer);

c)
Код

StringBuffer buffer = new StringBuffer("The Java Programming Language");
for ( int i = 0; (i ^ buffer.length()) != 0; i++ )
{
if ( (buffer.charAt(i)&32) != 0 )
{
 if ( (buffer.charAt(i)&~32) != 0 )
  buffer.setCharAt( i, (char)(buffer.charAt(i)&~32) );
}
else if ( (buffer.charAt(i)&~32) != 0 )
 buffer.setCharAt( i, (char)(buffer.charAt(i)|32) );
}
System.out.println(buffer);

Добавлено @ 20:28
Объяснение:
Как известно ^ это XOR, то есть исключающее или (то есть если побитово сравнивать, то остаются биты, которые не равны).
Это значит что (i ^ buffer.length()) != 0 будет правдой тогда и только тогда, когда и = длинне буфера.
PM MAIL   Вверх
Domestic Cat
Дата 16.8.2004, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



У меня (есессно) аналогичное решение:
Код

class Reverser
{
   private static int SPACE = ' ';
   private StringBuffer sb;

   public Reverser(StringBuffer sb)
   {
       this.sb = sb;
   }
   
   public void print()
   {
       System.out.println(sb);
   }
   
   public void makeAllUpperCase()
   {
       for (int i = 0; i != sb.length(); i++)
       {
           if ( (sb.charAt(i) ^ SPACE) != 0)
           {
                  sb.setCharAt(i, (char) (sb.charAt(i) & (~SPACE)));
           }
       }
   }
   
   public void makeAllLowerCase()
   {
       for (int i = 0; i != sb.length(); i++)
       {
           if ( (sb.charAt(i) ^ SPACE) != 0)
           {
                  sb.setCharAt(i, (char) (sb.charAt(i) | SPACE));
           }
       }
   }
   
   public void reverseCase()
   {
       for (int i = 0; i != sb.length(); i++)
       {
           if ( (sb.charAt(i) ^ SPACE) != 0)
           {
                  sb.setCharAt(i, (char) (sb.charAt(i) ^ SPACE));
           }
       }
   }
}


smile.gif


--------------------

PM   Вверх
DarkDS
Дата 16.8.2004, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



i != sb.length() ХА! Так не спортивно smile.gif
PM MAIL   Вверх
Domestic Cat
Дата 16.8.2004, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
i != sb.length() ХА! Так не спортивно


Ну дык по правилам же? smile.gif

---------------------------------

Кстати, почему в ascii символ DEL имеет код 127, тогда как остальные аналогичные символы имеют код 0 - 31 ? wink.gif

Это сообщение отредактировал(а) Domestic Cat - 16.8.2004, 21:14


--------------------

PM   Вверх
DarkDS
Дата 16.8.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Дык... Он же 2^7.. То есть покрывает всю нерасширенную таблицу.
| с ним всегда будет 1
PM MAIL   Вверх
Domestic Cat
Дата 16.8.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Насколько я знаю, некое время назад smile.gif ascii переводился в
бинарный формат и отображался на бумаге в виде дырочек -
1 - дырка, 0 - не дырка. Чтобы удалить символ на перфоленте,
и сделали DEL = 127 = 1111111 - он выбивал все семь дырок.



--------------------

PM   Вверх
redrick
Дата 16.8.2004, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



=)))))


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
DarkDS
Дата 16.8.2004, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Уточнение: На перфокартах smile.gif))
На перфоленте было комбинацией дырок (то есть там был квадрат с которого считывались дырки...)
PM MAIL   Вверх
Domestic Cat
Дата 16.8.2004, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



smile.gif Опечатка.

А почему данный код не бyдет работать? И что сделать чтобы он заработал?

Код

String string = "somedir:somestuff";
String result = string.replaceAll(":", "\");


Это сообщение отредактировал(а) Domestic Cat - 17.8.2004, 16:12


--------------------

PM   Вверх
redrick
Дата 16.8.2004, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



ну если str определена выше по тексту, то должен работать... ну и слэш наверно удвоить надо


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Domestic Cat
Дата 17.8.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Эх... попробуй удвоить smile.gif Заработает?


--------------------

PM   Вверх
AntonSaburov
Дата 17.8.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Забудем об опечатке: Объявлено string а используем str.replaceAll().

Вообщем-то надо 4 слеша поставить.
replaceAll() использует синтаксис регулярных выражений и один слеш (если удвоить) будет воспринят отнюдь не как слеш (читайте regular expression)
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 17.8.2004, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Опечатку исправил smile.gif

В replaceAll() регулярным выражением является только ":", а второй аргумент - обычный
String smile.gif.
Объяснение здесь такое: чтобы вставить в String слэш, нужно писать "\\".
Это будет интерпретировано как "\", и в процессе замены ":" на "\"
мы получим строку "somedir\somestuff" - с ошибкой! Поэтому ":" нужно заменять на 2
слэша - "\\\\". Это будет понято как "\\", и после замены мы получим "somedir\\somestuff"
- здесь уже все ок.


--------------------

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.