перемещение символов в текстовой строке на заданное количество позиций
Я новичок в программировании и пытаюсь написать программу, которая перемещает символы в текстовой строке на определенное количество позиций.
Программа должна включать метод, входными данными которого будут текстовая строка (type String) и количество позиций (type int
). Выводом будет строка со смещенными символами.
Например, перемещение на 4 позиции:
rabbit eats a carrot it eats a carrotrabb
Теперь у меня есть этот частичный код. Я могу стереть первые символы, но я не знаю, как положить их в конец из этого текста. Как я могу это сделать?
public static void main(String[] args) {
System.out.println("enter the text: ");
Scanner cti = new Scanner(System.in);
String a = cti.nextLine();
System.out.println("enter number of positions= ");
int b = cti.nextInt();
char firstLetter = a.charAt(0);
b--;
a = a.substring(b);
String m = a + firstLetter ;
System.out.println("now it is "+ m);
}
5 ответов:
import java.util.*; public class JavaApplication5 { public static void main(String[] args) { System.out.println("enter the text: "); Scanner cti = new Scanner(System.in); String a = cti.nextLine(); System.out.println("enter number of positions= "); int b = cti.nextInt(); String firstPart = a.substring(0,b); // line 1 b--; a = a.substring(b); String m = a + firstPart ; // line 2 System.out.println("now it is "+ m); } }
См. вышеизложенные изменения в инструкции, помеченной строкой 1 и строкой 2 комментария.
В строке 1 мы получаем первую часть строки, а в строке 2 Добавляем в конце вторую часть строки.
public String foo(String s, int n) { String s2 = s.substring(0, n); s = s.substring(n) + s2; return s; }
Вы можете поставить несколько проверок на это, например, null string или n меньше s. length () и т. д.
Если вы используете регулярное выражение, это всего одна строка:
return str.replaceAll("^(.{" + n + "})(.*)", "$2$1");
Для вычисления числа сдвигов лучше использовать оператор модуля. Когда начальное число сдвига больше длины строки. Проверьте это:
public String shift(String string,int n){ int nshift = string.length() < n ? n%string.length() : n ; String a = string.substring(0,nshift); return string.substring(nshift) + a ; }
Еще одна версия. Вся работа по существу сделана в 1 строке здесь:
String result = new StringBuilder(a).delete(0, b).append(a.substring(0,b)).toString();
В любом случае, полный код:
import java.util.*; public class ShiftLetters { public static void main(String[] args) { System.out.print("enter the text: "); Scanner cti = new Scanner(System.in); String a = cti.nextLine(); System.out.print("Enter number of positions: "); int b = cti.nextInt(); String result = new StringBuilder(a).delete(0, b).append(a.substring(0,b)).toString(); System.out.println(result); } }
Кроме того, вы можете быть более точным со своим стилем отступов, чтобы улучшить читаемость.