Как изменить символы в массиве с помощью java?

Вопрос: Я создал небольшой код, который просит пользователя ввести любое слово, а затем оно изменит его. Я не могу понять, как его отменить, поэтому помощь ценится. Вот мой код: package Test; import java.util.Scanner; public class TestMain { public static void main(String[]args){ String word = getWord(); char[]wordArray; wordArray = word.toCharArray(); System.out.print("NORMAL WORD: " + word +

Вопрос:

Я создал небольшой код, который просит пользователя ввести любое слово, а затем оно изменит его. Я не могу понять, как его отменить, поэтому помощь ценится.

Вот мой код:

package Test; import java.util.Scanner; public class TestMain { public static void main(String[]args){ String word = getWord(); char[]wordArray; wordArray = word.toCharArray(); System.out.print(«NORMAL WORD: » + word + «n»); System.out.print(«REVERSE WORD: «); } public static String getWord(){ Scanner hold = new Scanner(System.in); String word; System.out.print(«Enter a word:»); word = hold.nextLine(); return word; } } Ответ №1

У StringBuilder есть обратный метод.

System.out.print(«REVERSE WORD: » + new StringBuilder(word).reverse().toString());

Или если вы не хотите использовать встроенные методы

String result= «»; for(int i=word.length(); i>0; i—) { result+= word.charAt(i-1); } System.out.print(«REVERSE WORD: » + result); Ответ №2public static void main(String args[]) { String a = «12345»; char [] original= a.toCharArray(); char[] reverse = new char[a.length()]; int j =0; for(int i=reverse.length-1; i>=0; i—) { reverse[j] = original[i]; j++; } System.out.println(new String(reverse)); } Ответ №3

Сделай это:
1. Преобразуйте строку в массив символов.
2. Поменяйте местами (первый и последний → второй и второй последний ->… до середины).
3. Вы получите линейную сложность O (n/2) = O (n).

public static String reverseWord(String str) { if(str.length()>0) { char arr[] = str.toCharArray(); int length = arr.length; for(int i=0; i<length/2; i++) { char temp = arr[i]; arr[i] = arr[length-i-1]; arr[length-i-1] = temp; } return new String(arr); } return str; } Ответ №4

Я использую StringBuilder для построения инвертированной строки. В вашем основном методе.

String word = getWord(); StringBuilder sb = new StringBuilder(); for(char c : word.toCharArray()) { sb.insert(0, c); } String reversed = sb.toString(); System.out.print(«NORMAL WORD: » + word); System.out.print(«REVERSE WORD: » + reversed); Ответ №5

Давайте посмотрим на код в main:

char[]wordArray = word.toCharArray();

String представляет собой группу char один за другим.

Нам нужно добавить каждый char в начало результата в цикле:

String result = «»; for(char wordChar : word.toCharArray()) { result = wordChar + result; }

Это приведет к тому, что первый char будет последним, а второй – вторым и последним. Таким образом, мы можем изменить порядок String.

Ответ №6public class test { public static void main(String[] args) { String word = «Stack Overflow»; char[] wordArray = word.toCharArray(); System.out.println(«NORMAL WORD=» + Arrays.toString(wordArray)); test.reverse(wordArray); System.out.println(«REVERSE WORD=» + Arrays.toString(wordArray)); } public static void reverse(char[] array) { if (array == null) { return; } int i = 0; int j = array.length — 1; char tmp; while (j > i) { tmp = array[j]; array[j] = array[i]; array[i] = tmp; j—; i++; } } }

Вывод:

NORMAL WORD=[S, t, a, c, k, , O, v, e, r, f, l, o, w] REVERSE WORD=[w, o, l, f, r, e, v, O, , k, c, a, t, S]

Оцените статью
Добавить комментарий