Как разбить строку на 2 равные части в Java - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу разделить строку следующим образом:

String = "Titanic";

на две строки одинаковой длины, и если она не делится на 2, в первой или второй части будет 1 или больше букв. как это

//if dividle by 2
Str1 = "BikG";
Str2 = "amer";

//if it isnt dividle by 2
Str1 = "Tita";
Str2 = "nic";

Ответы [ 3 ]

0 голосов
/ 14 апреля 2020

Вы можете использовать String.substring () для этой цели:

String s = "Titanic";

int half = (s.length()+1)/2;

String part1 = s.substring(0, half);
String part2 = s.substring(half);

System.out.println(part1); // Prints: Tita
System.out.println(part2); // Prints: nic

Здесь (s.length()+1)/2 автоматически усечет 0.5, если это произойдет, потому что деление между целыми числами.

0 голосов
/ 14 апреля 2020

Что вы делаете, чтобы разделить нечетное число, например 15 с тем же требованием?

Вы сохраняете результат 15 / 2 в переменную int, скажем

int half = 15 / 2 

который дает вам 7. Согласно вашему требованию, вам нужно добавить 1 к half, чтобы сделать первую половину (то есть 8), а оставшаяся половина будет 15 - 8 = 7.

С другой стороны, в случае, если четного числа, вы просто делите его на 2, чтобы иметь две половинки.

Вы должны применить тот же лог c в случае String. Ниже приведено демо:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int half;
        String str1 = "Titanic";
        half = str1.length() / 2;
        String str1Part1 = str1.substring(0, half + 1);
        String str1Part2 = str1.substring(half + 1);
        System.out.println(str1Part1 + ", " + str1Part2);

        String str2 = "HelloWorld";
        half = str2.length() / 2;
        String str2Part1 = str2.substring(0, half);
        String str2Part2 = str2.substring(half);
        System.out.println(str2Part1 + ", " + str2Part2);

        Scanner in = new Scanner(System.in);
        do {
            System.out.print("Enter a string: ");
            String str = in.nextLine();
            half = str.length() / 2;
            System.out.println(str.length() % 2 == 1 ? str.substring(0, half + 1) + ", " + str.substring(half + 1)
                    : str.substring(0, half) + ", " + str.substring(half));
            System.out.print("Enter Y to continue or any input to exit: ");
        } while (in.nextLine().toUpperCase().equals("Y"));
    }
}

Пример прогона:

Tita, nic
Hello, World
Enter a string: Arvind
Arv, ind
Would you like to continue? [Y/N]: y
Enter a string: Kumar
Kum, ar
Would you like to continue? [Y/N]: Y
Enter a string: Avinash
Avin, ash
Would you like to continue? [Y/N]: n

Примечание:

  1. % является оператором по модулю.
  2. Проверка Подстрока строки (int beginIndex, int endIndex) и Подстрока строки (int beginIndex) , чтобы узнать больше о substring функций String.
  3. Проверьте https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html, чтобы узнать о троичном операторе.

Не стесняйтесь комментировать в случае любых сомнений /issue.

0 голосов
/ 14 апреля 2020

Вы можете сделать это, например, следующим образом:

String base = "somestring";
int half = base.length() % 2 == 0 ? base.length()/2 : base.length()/2 + 1;
String first = base.substring(0, half);
String second = base.substring(half);

Просто, когда n - длина строки, если n делится на 2, разделите строку на n/2, в противном случае разделите в n/2 + 1, так что первая подстрока на один символ длиннее второй.

...