2015-09-06 3 views
3

Я делаю новое программное обеспечение для преобразования, чтобы скрыть сообщения (для удовольствия). Я сделал класс преобразования Binary и Decimal, и моя идея заключается в том, что пользователь вводит строку, преобразует все в двоичный формат. Затем разбивает его пополам, преобразует одну половину в десятичную, затем снова добавляет строку, чтобы сделать ее комбинацией двоичных и десятичных. В других версиях я добавлю больше конверсий, больше разделов и, возможно, конвертирую и на языки. Мне нужно разделить строку пополам. Это мой код до сих пор ::Разделение строки на две половины

public ray() { 
    Scanner in = new Scanner(System.in); 

    while (true) { 
     System.out.println("Please input the text you wish to encode!"); 
     System.out.println("Type '#' to quit the Software."); 
     String s1 = in.nextLine(); 
     if ("#".equalsIgnoreCase(s1)) { 
      System.out.println("Goodbye, hope you enjoyed RAYConversion v1.0 Alpha."); 
      // close software 
     } 

     // convert all to binary 
     binary Binary = new binary(); 

     //what i need to do is split stirng s1 in half, make it into different strings. Then I will convert 
     //the two strings to binary and decimal. I made a converter for that. 

    } 
} 
+0

Как вы разделите строку «AAA» пополам? – Tunaki

+0

Пожалуйста, используйте соглашения об именах. Класс, называемый «луч», должен называться «луч», а «двоичный двоичный» должен быть «двоичный двоичный» - с классом «двоичный» и переменной «двоичный». Кроме того, что такое верхний/нижний регистр '' # '', если вы вызываете' equalsIgnoreCase() 'на' String' только с этим символом? – bcsb1001

+0

Я новичок в Java, он работает для меня, equalsIgnoreCase может быть равным, я знаю, я привык использовать Bukkit API lol, где я использую equalsIgnoreCase для команд. И AAA, вторая половина будет иметь AA и сначала будет A. – JustRayz

ответ

11
final int mid = s1.length()/2; //get the middle of the String 
String[] parts = {s1.substring(0, mid),s1.substring(mid)}; 
System.out.println(parts[0]); //first part 
System.out.println(parts[1]); //second part 
0

Я предполагаю, что это поможет вам сделать то, что вы хотите достичь:

P.S. Обратите внимание, что для строк с odd количество символов, вторая половина строки получит преимущество дополнительного символа.

Создать метод, как это:

public static String substring(int a, int b, String temp) { 
    String a = ""; 
    for(int i = a; i<b; i++) { 
     char ch1 = temp.charAt(i); 
     a = a + ch1; 
    } 
    return a; 
} 

и в вашей main функции, вызовите метод, как показано ниже:

String s1a = substring(0, (s1.length()/2), s1); 
String s1b = substring((s1.length()/2),s1.length(), s1); 
+0

очень полезно, ty! Однако, вероятно, я буду использовать другой, поскольку он имеет гораздо больше смысла и меньше кода. Спасибо, в любом случае! – JustRayz

+0

Отредактировано и улучшено. Я думаю, это упрощает и упрощает понимание того, что происходит в этой функции. –

0

Вы можете использовать функцию подстроки Java, чтобы разделить их пополам :

String s1a = s1.substring(0, (s1.length()/2)); 
String s1b = s1.substring((s1.length()/2); 
0

Попробуйте это:

int len = whole.length(); 
String a = whole.substring(0, whole.length/2), b = whole.substring(whole.length/2); 

При этом используется метод substring(). В случае String с нечетной длиной вторая половина будет на один символ длиннее.

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