编辑:我找到了一种方法来使用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);
}
}
}
}
}
答案 0 :(得分:2)
您允许用户输入正数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
。它更容易阅读。
无论您使用哪种编辑器配置自动格式化:)
答案 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