【发布时间】:2020-11-29 15:44:49
【问题描述】:
如何以“nxw”的形式打印出特定数字的编号以及数字本身。 n 是数字的频率,w 是数字本身。
因此,例如,如果用户的输入是 1 1 1。输出将是 3x1。
如果用户的输入是第一行的 1 1 1 和第二行的 7 7 1 1 0。输出为 3x1.2x7.2x1.1x0。没有空格。
注意:
-
循环以点结束。
-
数字不必按特定顺序排列
-
用户可以输入任意数量的数字。
例如,输入可以是 1 1 1 在第一行 7 7 1 1 0 在第二行 ... 等等。
到目前为止,这是我的代码。但我知道这不是真的。
import java.util.*;
public class LaufLaengenKodierung {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int freq = 0;
int oldNum = 0;
int num = 0;
boolean first = true;
while(sc.hasNextInt()) {
int i = sc.nextInt();
if(i == oldNum) {
freq++;
num = i;
} else if(i != oldNum) {
freq = 1;
oldNum = i;
num = i;
if(first) {
first = false;
num = i;
freq = 1;
}
}
}
System.out.print(freq + "x" + num + ".");
sc.close();
}
}
【问题讨论】:
-
当前代码具体有什么问题?你能举一个失败的例子,包括输入、预期输出和实际输出吗?
-
如何知道用户何时输入完整数?
-
输入的数字是按排序顺序还是随机顺序?
-
@Brian McCutchon 如果输入为 0 0 0 .. 输出为 3x0。哪个是对的。但是如果输入 0 0 1 .. 输出是 1x1。如果第一行的输入为 0 0 0,第二行的输入为 2 2 2,则输出为 3x2。什么时候应该是 0x3.3x2。
-
@Gilbert Le Blanc 当用户输入“.”时或除整数以外的任何内容