я написал код, который сдвигает содержимое ArrayList
вправо и смещение может быть любое число, переданная метода shiftRight(String myString, int shift)
Внутри метода, мне нужно поставить каждый char
пройденного String
в ArrayList myList
.Shifting содержимого `ArrayList` к правым
Например, если у меня есть
"abcdef", 2
результат должен быть
efabcd
, как он перемещается 2
буквы вправо. Другой пример:
"abcdef", 4
то выход
cdefab
Мой код дает edabcf
, когда сдвиг 2
и String
является "abcdef"
тогда она должна производить efabcd
. Coulb smb, пожалуйста, помогите мне? Я попытался отладить его, но все еще не мог понять, почему он принимает d
вместо f
. Заранее спасибо!
Логика кода:
1) Поместите каждый символ внутри ArrayList myList
, запустив for - loop
2) Я присвоено значение shift
к временному count
, который декрементах внутри while-loop
. Внутри while-loop
я добавил символ, который будет удален в ближайшее время, до ArrayList temp
от myList
(если shift
- 2
, то символы ef
добавляются к temp
). Затем удалите эти символы из myList
внутри того же цикла.
3) Добавлены символы из temp
списка в myList
import java.util.ArrayList;
public class ShiftToTheRight {
public static void main(String[] args){
String myString = "abcdef";
int shift = 2;
ArrayList<String> myList = shiftRight(myString, shift);
for(int i = 0; i < myList.size(); i++){
System.out.print(myList.get(i) + "");
}
}
public static ArrayList<String> shiftRight(String myString, int shift){
ArrayList<String> myList = new ArrayList<>();
//Put every character inside the myList
for(int i = 0; i < myString.length(); i++){
myList.add(myString.charAt(i) + "");
}
ArrayList<String> temp = new ArrayList<>();
//Add the rightmost characters into the temp
//Delete those characters from the myList
int count = shift;
while(count != 0){
temp.add(myList.get(myList.size() - shift));
myList.remove(myList.get(myList.size() - shift));
count--;
}
//Add the characters from the temp to the beginning of the myList
for(int i = 0; i < temp.size(); i++){
myList.add(i ,temp.get(i));
}
return myList;
}
}
@SotiriosDelimanolis, сделано. Взгляните на описание. –
Должен ли вы вернуть массив строк из метода? Можете ли вы вернуть сдвинутую строку? – andrewdleach
Я должен вернуть «сдвинутую строку» внутри «arraylist» (я сам себя оспаривал :)), @andrewdleach –