首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在引用上述代码时,预期的result="ECTSTRI“但实际的result="ECTTRI”

在引用上述代码时,预期的result="ECTSTRI“但实际的result="ECTTRI”
EN

Stack Overflow用户
提问于 2019-08-08 23:48:04
回答 3查看 28关注 0票数 2

给定一个新字符串作为输入,在字母半部分最先出现的位置创建一个新字符串。如果字符串的长度为奇数,则中间的字符保持在其位置。

我能够以偶数字符串长度打印所需的字符串,但是遇到一些奇数长度字符串的问题,因为奇数字符串长度的情况下,中间的字符应该在它自己的位置。该怎么做呢?

代码语言:javascript
运行
复制
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);
}
EN

回答 3

Stack Overflow用户

发布于 2019-08-09 00:03:55

如果您添加了

代码语言:javascript
运行
复制
   System.out.println(zstr+str.charAt(halflen)+newstr);

对于满足奇数长度条件的打印,它应该可以做到这一点。

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

票数 0
EN

Stack Overflow用户

发布于 2019-08-09 00:07:36

尝尝这个

代码语言:javascript
运行
复制
    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);
    }
票数 0
EN

Stack Overflow用户

发布于 2019-08-09 00:13:18

这应该能起到作用

代码语言:javascript
运行
复制
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);
        }

在你的代码中,你留下了中间的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57416408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档