为了账号安全,请及时绑定邮箱和手机立即绑定

参考上述代码,预期结果=“ECTSTRI”但实际结果=“ECTTRI”

参考上述代码,预期结果=“ECTSTRI”但实际结果=“ECTTRI”

慕慕森 2023-05-24 16:02:18
给定一个新字符串作为输入,创建一个新字符串,其中半个字母首先出现。如果字符串的长度为奇数,则中间字符保留在其位置。我能够打印具有偶数字符串长度的所需字符串,但遇到奇数长度字符串的一些问题,因为在奇数字符串长度的情况下,中间字符应该在它自己的位置。这个怎么做?String str = "TRISECT";int len = str.length();int halflen = len / 2;String newstr = "";String zstr = "";if(len%2==0){    for (int i = 0; i < halflen; i++) {        char ch = str.charAt(i);        newstr = newstr + ch;    }    for (int j = halflen; j < len; j++) {        char ch = str.charAt(j);        zstr = zstr + ch;    }    System.out.println(zstr + newstr);}else{    for (int i = 0; i < halflen; i++) {        char ch = str.charAt(i);        newstr = newstr + ch;    }    for (int j = halflen + 1; j < len; j++) {        char ch = str.charAt(j);        zstr = zstr + ch;    }    System.out.println(zstr + newstr);}
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

如果你添加

   System.out.println(zstr+str.charAt(halflen)+newstr);

对于满足奇数长度条件的印刷品,它应该可以解决问题。

发生的事情是,由于您将字符串的一半长度分成两半(并将该值保存在 halflen 变量中),因此您的 for 不会捕获位于 halflen 位置的字符。


查看完整回答
反对 回复 2023-05-24
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

尝试这个


    String str = "TRISECT";

    int len = str.length();

    int halflen = len / 2;

    String newstr = "";

    String zstr = "";

    if(len%2==0){

        for (int i = 0; i < halflen; i++) {

            char ch = str.charAt(i);

            newstr = newstr + ch;

        }

        for (int j = halflen; j < len; j++) {

            char ch = str.charAt(j);

            zstr = zstr + ch;

        }

        System.out.println(zstr + newstr);

    }else{

        for (int i = 0; i < halflen; i++) {

            char ch = str.charAt(i);

            newstr = newstr + ch;

        }

        char middle;

        middle = str.charAt(halflen);


        for (int j = halflen + 1; j < len; j++) {

            char ch = str.charAt(j);

            zstr = zstr + ch;

        }

        System.out.println(zstr +middle+ newstr);

    }


查看完整回答
反对 回复 2023-05-24
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这应该可以解决问题


String str = "TRISECT";

        int len = str.length();

        int halflen = len / 2;

        String newstr = "";

        String zstr = "";

        if(len%2==0){

            for (int i = 0; i < halflen; i++) {

                char ch = str.charAt(i);

                newstr = newstr + ch;

            }

            for (int j = halflen; j < len; j++) {

                char ch = str.charAt(j);

                zstr = zstr + ch;

            }

            System.out.println(zstr + newstr);

        }else{

            for (int i = 0; i < halflen; i++) {

                char ch = str.charAt(i);

                newstr = newstr + ch;

            }

            char middle = str.charAt(halflen);


            for (int j = halflen+1; j < len; j++) {

                char ch = str.charAt(j);

                zstr = zstr + ch;

            }

            System.out.println(zstr +middle+ newstr);

        }

在您的代码中,您将中间字符留在后面。


查看完整回答
反对 回复 2023-05-24
  • 3 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信