我怎样才能获得回报?

时间:2016-12-18 21:20:06

标签: java printing return

我正在编写一个程序,该程序将以整数行读取,并将在不同的行上以相反的顺序打印出来。我已经编写了代码来实际制作它,但我仍然坚持如何让它来测试它。当我运行我的代码并输入整数时,它就会停止运行。如何将其打印回来?我需要在某个地方使用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); 

}
}

2 个答案:

答案 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)

你在一个方法里面调用print commnad你需要调用方法来开始打印..你创建Separator对象现在这个对象需要调用该方法。 s.getValue()

顺便说一句,如果你想要反转打印所有整数你不应该在值%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从值中删除所有数字