我正在编写一个程序,该程序将以整数行读取,并将在不同的行上以相反的顺序打印出来。我已经编写了代码来实际制作它,但我仍然坚持如何让它来测试它。当我运行我的代码并输入整数时,它就会停止运行。如何将其打印回来?我需要在某个地方使用println吗?这是迄今为止的代码。我已经在测试仪类和分离器中添加了扫描仪。
分隔符类
import java.util.Scanner;
public class Separator {
public Separator(int initialValue){
value = initialValue;
while (initialValue / 10 == 0){
initialValue = initialValue / 10;
count++;
}
}
public void getValue(){
for (int i = 1; i <= count; i++){
System.out.println(value % 10);
value /= 10;
}
}
int count = 1;
int value;
}
测试人员类
import java.util.Scanner;
class SeparatorTester {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int userInput = sc.nextInt();
Separator s = new Separator(userInput);
}
}
答案 0 :(得分:1)
在main
方法中,您将一个数字读入userInput
,
然后从中创建一个新的Separator
,
然后你别无所求。
这些操作都不打印任何东西,
这就是没有输出的原因。
您可以添加此行以获得一些输出:
s.getValue();
但是你的程序实际上并不起作用。
对于userInput = 123
,
该计划输出3
。
我认为这不是你想要的。
我正在编写一个程序,它将读取一行整数,并将在不同的行中以相反的顺序打印出来。
这听起来像是如果用户在一行中输入例如13 51 47
,那么你想以相反的顺序打印数字,每个都在一个单独的行上,如下所示:
47
51
13
要实现这一点,最简单的方法是使用堆栈,例如:
Scanner scanner = new Scanner("13 51 47");
ArrayDeque<Integer> stack = new ArrayDeque<>();
while (scanner.hasNextInt()) {
stack.push(scanner.nextInt());
}
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
另一方面,您的实施与您的描述相矛盾,
它看起来更像是你想要反转数字,
例如,如果输入为123,则要打印321。
更简单的实现可以是:{/ p>而不是Separator
类
int reverse(int value) {
int work = 0;
while (value > 0) {
work *= 10;
work += value % 10;
value /= 10;
}
return work;
}
答案 1 :(得分:0)
顺便说一句,如果你想要反转打印所有整数你不应该在值%10 == 0时切割数字你这样切割一些数字并且你不能在你的方法中打印它们。 试试这个:
let say u got value 4567
x=0
y=0
result=0
x=value/10
y=value -x >> now y got the the number 7
result =result*10+y
>> now result got 7
value = value/10
所有这些循环unteel值/ 10 == 0&amp;&amp;值%10 == 0
在第二次迭代结果得到数字76 ...之后765等等
当值/ 10 == 0时,表示他得到1位
当值/ 10 == 0且值%10 == 0时,其平均值= 0且其平均值u从值中删除所有数字