【问题标题】:Splitting a string into two halfs将字符串分成两半
【发布时间】:2015-12-02 02:31:12
【问题描述】:

我正在制作一个新的转换软件来隐藏消息(为了好玩)。我做了一个二进制和十进制转换类,我的想法是,用户输入字符串,它将全部转换为二进制格式。然后将其分成两半,将一半转换为十进制,然后将字符串重新加在一起,使其成为二进制和十进制的混合。在其他版本中,我将添加更多转换、更多拆分,并且可能还会转换为语言。我需要将字符串分成两半。到目前为止,这是我的代码::

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.

    }
}

【问题讨论】:

  • 如何将字符串“AAA”一分为二?
  • 请使用命名约定。一个名为ray 的类应称为Ray,而binary Binary 应为Binary binary - 具有一个类Binary 和一个变量binary。另外,'#' 的大写/小写是什么,考虑到您在 String 上调用 equalsIgnoreCase() 时只有那个字符?
  • 我对 Java 有点陌生,它对我有用,equalsIgnoreCase 可能是我知道的 equals,我习惯使用 Bukkit API 大声笑,我使用 equalsIgnoreCase 作为命令。 AAA,下半场是 AA,前半场是 A。

标签: java arrays string split binary


【解决方案1】:

我想这会让你完成你想要达到的目标:

附:请注意,对于字符数为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);

【讨论】:

  • 非常有帮助,你!但是我可能会使用另一个,因为它更有意义并且代码更小。还是谢谢!
  • 编辑并改进了我的答案。我想这会让你更容易理解函数中发生的事情。
【解决方案2】:
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

【讨论】:

    【解决方案3】:

    您可以使用 Java 的 substring 函数将它们分成两半:

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

    【讨论】:

      【解决方案4】:

      试试这个:

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

      这使用substring() 方法。对于奇数长度的String,后半部分将长一个字符。

      【讨论】:

        【解决方案5】:

        此方法删除奇数长度的字符串的中间字符。这是由2 + 1在else部分的后半部分完成的。

        public void method()
        {
            Scanner sc = new Scanner(System.in);
            System.out.println("ENTER A STRING");
            original = sc.next();
            
            if(original.length()%2 == 0)
            {
                firsthalf =original.substring(0, original.length()/2);
                secondhalf = original.substring(original.length()/2);
                System.out.println(firsthalf);
                System.out.println(secondhalf);
            }
            else
            {
                firsthalf = original.substring(0, original.length()/2);
                secondhalf = original.substring(original.length()/2+1);
                System.out.println(firsthalf);
                System.out.println(secondhalf);
            }   
        }
        

        【讨论】:

        • 此方法丢弃奇数长度字符串的中间字符。这是由else部分后半部分的“2+1”完成的。希望你觉得它有用。
        • 不确定 OP 是否要删除中间字符
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 2020-10-03
        相关资源
        最近更新 更多