>编辑:我找到了一种与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
-
您允许用户输入正
num1
并使用for (int counter1 = -1; counter1 >= num1; counter1--)
倒计时。这是没有意义的,因为counter1 >= num1
决心-1 >= 1
这永远不会是真的。当方向向下时,数字必须为负数,当方向向上时,数字必须为正数。 -
您可能需要循环,直到用户提供有效的方向。目前,对于任何未
up
的输入,您都会下降。一个可能的解决方案是:String input; do { input = keyboard.nextLine(); } while (!input.equalsIgnoreCase("up") && !input.equalsIgnoreCase("down"));
-
请使用较短的变量名称。
counter1
的作用域仅限定为for
循环块,因此请将其称为i
。它更容易阅读。 -
无论您使用哪种编辑器,都可以配置自动格式化:)