2014-01-15 2 views
2

Хотя яростно очевидно, что я пытаюсь сделать, я бы предпочел, чтобы мне не сказали, как придумать конечный результат, даже если Кстати, я думаю, что это неправильно (подсказки будут оценены, хотя). Anyways ...Поиск позиции каждого из одного повторяющегося символа/подстроки в строке

Возьмем, к примеру, 8-битное двоичное представление числа в формате String, «01110101». Если я меняю номер, я получаю «10101110». Если бы я хотел найти позиции каждого 1 и добавить их в массив, как бы я это сделал? Я попытался использовать indexOf ('1'), но он продолжает возвращать 0 или 1 в качестве индекса.

Редактировать: По конечным результатам я имею в виду общую цель, которую я пытаюсь выполнить со всем этим, а не вопрос, который я задаю. Я просто хотел, чтобы кто-то прыгал и рассказывал мне, как конвертировать из двоичного кода в dec, а не отвечать на мой текущий вопрос ...

Edit2: Хорошо, я буду более конкретным. В основном, я пытаюсь взять двоичное число (-ы), перевернуть их и получить их позиции и добавить их в массив. Затем я попытаюсь выполнить итерацию по массиву, взяв 2 на каждую позицию и добавив их. Возможно, это не самый эффективный способ конвертировать из двоичного кода в десятичный, но это то, что я придумал.

+0

Ваша проблема с 'IndexOf («1»)' является то, что он возвращает только первое вхождение этого символа (как указано в [документации String] (http://docs.oracle.com/javase/ 7/документы/API/Java/языки/String.html # IndexOf% 28java.lang.String% 29)). Это, как говорится, так как вы не хотите никаких конкретных ответов, попробуйте подумать о разных способах представления вашей строки. Просмотрите документацию по String, чтобы узнать, какие методы вы можете использовать для этого. – endorphins

+1

hint hint charAt (index) – gtgaxiola

+0

Как уже указывали другие, вы можете использовать метод 'string.charAt (index)', чтобы вернуть вам персонажа, на который вы указываете. Все, что вам нужно сделать, это просмотреть все символы вашей строки и проверить, являются ли они 1 или 0 .. или что вы можете ожидать. Но если вы хотите, чтобы подсказки были более конкретными, я могу дать вам некоторый код курса. – GameDroids

ответ

0

Попробуйте использовать StringTokenizer для сканирования символа с помощью char при повторении каждого из них.

StringTokenizer s = new StringTokenizer("0101010111101"); 
    ArrayList index = new ArrayList(); 
    int count; 

    while(s.hasMoreTokens){ 

     String num = s.nextToken(); 

     if(num.equals("1")){ 
      index.add(count); 
     }count++; 

    } 
+0

использовать 'num.equalsIgnoreCase (" 1 ")' для проверки равенства двух строк. 'Equals()' проверяет, являются ли два «объекта» одинаковыми (не если они имеют одинаковый контент) – GameDroids

Смежные вопросы