首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重新排列代码片段后获得额外的'-‘

在重新排列代码片段后获得额外的'-‘
EN

Stack Overflow用户
提问于 2020-08-22 02:08:12
回答 3查看 70关注 0票数 3

因此,我从Head First java一书开始学习Java,并偶然发现了一个练习。我需要重新排列这些代码片段,以获得如下输出:

代码语言:javascript
复制
a-b c-d

代码片段包括:

代码语言:javascript
复制
if (x == 1) {
                System.out.print("d");
                x = x - 1
            }
代码语言:javascript
复制
if (x == 2) {
                System.out.print("b c");
            }
代码语言:javascript
复制
if (x > 2) {
                System.out.print("a");
           }
代码语言:javascript
复制
while (x > 0) {
代码语言:javascript
复制
x = x - 1;
System.out.print("-");
代码语言:javascript
复制
int x = 3;

所以我做了这样的事情:

代码语言:javascript
复制
public class cc {
    public static void main(String [] args) {
        int x = 3;
        while (x > 0) {
            if (x == 2) {
                System.out.print("b c");
            }
            if (x > 2) {
                System.out.print("a");
            }
            if (x == 1) {
                System.out.print("d");
            }
            x = x - 1;
            System.out.print("-");
        }
        
    }

}

我得到的输出是:

代码语言:javascript
复制
a-b c-d-

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-22 02:15:42

您在一条if语句中遗漏了一个x = x - 1;,并且将print语句放在了错误的位置:

代码语言:javascript
复制
public class cc {
    public static void main(String [] args) {
        int x = 3;
        while (x > 0) {
            if (x == 2) {
                System.out.print("b c");
            }
            if (x > 2) {
                System.out.print("a");
            }
            x = x - 1;
            System.out.print("-");
            if (x == 1) {
                System.out.print("d");
                x = x - 1;
            }
        }

    }
}
票数 4
EN

Stack Overflow用户

发布于 2020-08-22 02:58:57

代码语言:javascript
复制
public class cc {
    public static void main(String [] args) {
        int x = 3;
        while (x > 0) {
            if (x == 2) {
                System.out.print("b c");
            }
            if (x > 2) {
                System.out.print("a");
            }
            if (x == 1) {
                System.out.print("d");
            }
            x = x - 1;
            System.out.print("-"); // will run for every iteration of the loop
        }
        
    }

}

看看这里的代码,在每次循环迭代之后,不管x的值是多少,它都会在输出后打印一个破折号。您还缺少来自的x = x - 1;

代码语言:javascript
复制
if (x == 1) {
                System.out.print("d");
                x = x - 1; // you were missing this
            }

上面的if语句也应该放在下面

代码语言:javascript
复制
x = x - 1;
System.out.print("-");

这样我们就不会在最后添加一个不必要的-在检查条件之前设置x == 1,这样我们就不会经历另一次迭代。

把所有这些放在一起,我们得到了这个

代码语言:javascript
复制
public class cc {
    public static void main(String [] args) {
        int x = 3;
        while (x > 0) {
            if (x > 2) {
                System.out.print("a");
            }
            if (x == 2) {
                System.out.print("b c");
            }
            x = x - 1;
            System.out.print("-");
            if (x == 1) {
                System.out.print("d");
                x = x - 1;
            }
        }

    }
}

编辑:我还为您重新安排了if语句,使其在== 2更具逻辑意义之前成为> 2

票数 1
EN

Stack Overflow用户

发布于 2020-08-22 02:37:18

本练习的重点是理解循环(在本例中是while循环)、if语句和修改存储在变量中的值。为此,我还建议查看数组,并尝试生成所需的输出。例如,这个特例将输出a-b,c-d,但是一般情况是什么呢?如果你有一堆字符,它们看起来就像是被分成几对,每一对用空格隔开,任何给定对的每一个元素之间都有一个连字符。

所以假设你有

代码语言:javascript
复制
String input = "abcd";

你必须写些什么才能得到

代码语言:javascript
复制
a-b c-d

在输出中?

以下是一种可能性

代码语言:javascript
复制
char[] chars = input.toCharArray();
int i = 0;
while (i < chars.length) {
    String separator;
    System.out.print(chars[i]);
    if (i == chars.length - 1) {
        separator = "\n";
    else if (i % 2 != 0) {
        separator = " ";
    } else {
        separator = "-";
    }
    System.out.print(separator);
    i++;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63527994

复制
相关文章

相似问题

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