计数器循环 - 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%5dn", 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%5dn", c1, c1 + 10, c1 + 100);
}
}
}
}
}

我看到你已经弄清楚了核心逻辑。顺便说一句,您的代码无法编译,存在语法错误。

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

我知道这不是有效的语法,但您将能够找出编写代码的正确方法。

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

我建议先可视化输出。在您的情况下,它如下所示:(_are空格)

Enter an ending value: 2
Direction: Up
____1___11__101
____2___12__102

另外,考虑错误案例。以下情况如下:

Enter an ending value: -10
Direction: Up
Error: Improper data
  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. 无论您使用哪种编辑器,都可以配置自动格式化:)

最新更新