【问题标题】:How can I get a return?我怎样才能得到回报?
【发布时间】:2016-12-18 21:20:05
【问题描述】:

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

}
}

【问题讨论】:

    标签: java printing return


    【解决方案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。 一个更简单的实现,而不是你的 Separator 类可能是:

    int reverse(int value) {
        int work = 0;
        while (value > 0) {
            work *= 10;
            work += value % 10;
            value /= 10;
        }
        return work;
    }
    

    【讨论】:

      【解决方案2】:

      你在方法中调用打印命令你需要调用方法来开始打印。你现在创建分离器对象这个对象需要调用方法。 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
      

      所有这些都在循环中解开 value/10 ==0 && value%10 ==0

      在第二次迭代结果得到数字 76 ... 之后 765 等等

      当值 /10 ==0 表示他得到 1 位数字

      当 value /10 ==0 and value%10 ==0 它的平均值 =0 并且它的平均值你从 value 中删除所有数字

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-25
        • 2018-03-16
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 2016-06-17
        • 1970-01-01
        相关资源
        最近更新 更多