Counter Loop - Java

时间:2018-03-14 21:30:22

标签: java

编辑:我找到了一种方法来使用CompareTo来帮助解决这个问题,但由于某种原因,我无法让倒数发挥作用。

这是一个负数,需要变得更负面以满足要求,但我在这里遗漏了一些东西。当我执行向下部分时,它会关闭程序。所以对我而言,这意味着我有一些搞砸了,程序没有看到问题并关闭。

我们应该:

  

询问用户是否有整数然后询问用户他/她是否想要计算   上或下。显示第一列包含的数字表   计数器,第二列包含计数器加10,和   第三列包含计数器加100.使每个数字都这样   占用总共5个空格。

     

如果计数,第一列应包含数字1到   用户输入;如果倒计时,第一列应包含数字   -1通过用户输入的否定;

     

对“up”和“down”这个词进行用户输入验证。允许任何   情况下。

import java.util.Scanner;

public class ps1 {

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    //Comparision string already declared
    String up = "up";
    String down = "down";

    //initialize the counters sum
    int sum = 0;

    //ask the user for a number
    System.out.println("Enter an ending value");
    int num1 = keyboard.nextInt();
    keyboard.nextLine();
    System.out.println("Count up or down?");
    String input = keyboard.nextLine();

    while (input.equalsIgnoreCase(up) || input.equalsIgnoreCase(down)) {
        System.out.println("Count up or down?");
        input = keyboard.nextLine();
    }

    if (input.compareToIgnoreCase(up) == 0) {
        if (num1 >= 0)
    for (int c = 1; c <= num1; c++) {
            sum = sum + c;
            System.out.printf("%5d%5d%5d\n", c, c + 10, c + 100);
            else 
                System.out.println("Up numbers must be positive");

    if (input.compareToIgnoreCase(down) == 0) {
            for (int c1 = -1; c1 <= num1; c1--) {
                sum = sum + c1;
                System.out.printf("%5d%5d%5d\n", c1, c1 + 10, c1 + 100);

            }
        }

    }
}
}

2 个答案:

答案 0 :(得分:2)

  1. 您允许用户输入正数num1并使用for (int counter1 = -1; counter1 >= num1; counter1--)倒计时。这没有任何意义,因为counter1 >= num1解析为-1 >= 1,这是永远不会的。方向向下时,数字必须为负数,当方向向上时,数字必须为正数。

  2. 您可能需要循环,直到用户提供有效的方向。目前,您可以查看不是up的任何输入。可能的解决方案是:

    String input;
    do {
      input = keyboard.nextLine();
    } while (!input.equalsIgnoreCase("up") && !input.equalsIgnoreCase("down"));
    
  3. 请使用较短的变量名称。 counter1仅限于for循环块,因此请将其命名为i。它更容易阅读。

  4. 无论您使用哪种编辑器配置自动格式化:)

答案 1 :(得分:2)

我发现你已经找到了核心逻辑。顺便说一句,你的代码不会编译,有语法错误。

您的代码如下所示:     打印(a a + 10 a + 100)

我知道它不是有效的语法,但你可以找出编写代码的正确方法。

要正确打印数据,您需要以下内容: https://dzone.com/articles/java-string-format-examples

我建议首先可视化输出。在您的情况下,它将如下所示:(_ are spaces)

 Enter an ending value: 2
 Direction: Up
 ____1___11__101
 ____2___12__102

另外,请考虑错误情况。下面会发生什么:

 Enter an ending value: -10
 Direction: Up
 Error: Improper data