Java 将负数输入数字反转程序

Java 将负数输入数字反转程序,java,Java,我的程序应该接受随机整数并反转它们。它目前适用于长度不超过十位数的所有正整数 import java.util.Scanner; public class Program2 { public static void main(String[] args) { // TODO Auto-generated method stub int input; Scanner scanner = new Scanner(System.in);

我的程序应该接受随机整数并反转它们。它目前适用于长度不超过十位数的所有正整数

import java.util.Scanner;

public class Program2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int input;
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        input = scanner.nextInt();
        System.out.print("Its reversal is ");
        reverse(input);
        System.out.println();;
    }
    public static void reverse(int number) {
        if(number < 10 && number > 0) {
            System.out.println(number);
            return;
        }
        else {
            System.out.print(number % 10);
            reverse(number/10);
         }
    }   
}
import java.util.Scanner;
公共课程2{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int输入;
扫描仪=新的扫描仪(System.in);
System.out.print(“输入整数:”);
输入=scanner.nextInt();
系统输出打印(“其反转为”);
反向(输入);
System.out.println();;
}
公共静态无效反向(整数){
如果(编号<10&&编号>0){
系统输出打印项次(编号);
返回;
}
否则{
系统输出打印(编号%10);
反面(数字/10);
}
}   
}

我一直很难找到程序返回负数反转的方法。最简单的方法是什么?

根据上面的评论,看起来您希望-123的反面是-321。如果是这样的话,我认为这个代码应该是有效的:

public static void reverse(int number) {
    if (number < 0) {
        System.out.print("-");
        reverse(number * -1);
    } else if (number < 10) {
        System.out.println(number);
    } else {
        System.out.print(number % 10);
        reverse(number / 10);
    }
}

根据上面的注释,看起来您希望-123的反面是-321。如果是这样的话,我认为这个代码应该是有效的:

public static void reverse(int number) {
    if (number < 0) {
        System.out.print("-");
        reverse(number * -1);
    } else if (number < 10) {
        System.out.println(number);
    } else {
        System.out.print(number % 10);
        reverse(number / 10);
    }
}

我希望这个方法能对你有所帮助

public static void reverse(int number) {
if (number < 10 && number > 0) {
  System.out.println(number);
  return;
} else if (number > 0) {
  System.out.print(number % 10);
  reverse(number / 10);
} else {
  System.out.print(number % 10);
  reverse((number / 10) * -1);
}
}
公共静态无效反向(整数){
如果(编号<10&&编号>0){
系统输出打印项次(编号);
返回;
}否则,如果(数字>0){
系统输出打印(编号%10);
反面(数字/10);
}否则{
系统输出打印(编号%10);
反面((数字/10)*-1);
}
}

在这里,我们将最后一个元素打印为负元素,然后将其与-1相乘,这样其余元素将为正,正循环将从第二次开始进行。

我希望此方法将对您有所帮助

public static void reverse(int number) {
if (number < 10 && number > 0) {
  System.out.println(number);
  return;
} else if (number > 0) {
  System.out.print(number % 10);
  reverse(number / 10);
} else {
  System.out.print(number % 10);
  reverse((number / 10) * -1);
}
}
公共静态无效反向(整数){
如果(编号<10&&编号>0){
系统输出打印项次(编号);
返回;
}否则,如果(数字>0){
系统输出打印(编号%10);
反面(数字/10);
}否则{
系统输出打印(编号%10);
反面((数字/10)*-1);
}
}


在这里,我们将最后一个元素打印为负元素,然后将其与-1相乘,使其余元素为正,正循环将从第二次开始进行。

那么您想在数字末尾加负号吗?请提供输入和预期输出,并描述“故障”否,负号仍然会出现在前面。如果出现负数,递归终止将不起作用,因此程序将进入无限循环。因此,您希望负号出现在数字的末尾?请提供输入和预期输出,并说明“故障”否,负号仍然会出现在前面递归终止在负数的情况下不起作用,因此程序将进入无限循环这是完美的!非常感谢。我想打印出“-”,但我不知道如何从那里继续。Super-nit:对于
number==Integer.MIN\u VALUE
@AndyTurner-Ah,它不能正常工作,因为
Integer.MIN\u VALUE*-1>Integer.MAX\u VALUE
?@smarx no-因为
-Integer.MIN\u VALUE==Integer.MIN\u VALUE
-所以您只需在第一个分支中继续调用
reverse
。@谢谢!我想我会让这段代码保持原样,因为我没有想到简单的修复方法,但很高兴知道这个限制。这太完美了!非常感谢。我想打印出“-”,但我不知道如何从那里继续。Super-nit:对于
number==Integer.MIN\u VALUE
@AndyTurner-Ah,它不能正常工作,因为
Integer.MIN\u VALUE*-1>Integer.MAX\u VALUE
?@smarx no-因为
-Integer.MIN\u VALUE==Integer.MIN\u VALUE
-所以您只需在第一个分支中继续调用
reverse
。@谢谢!我想我会让这段代码保持原样,因为我没有想到简单的修复方法,但很高兴知道这个限制。