Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从扫描仪递归输入的反向编号u顺序uu_Java_Recursion_Java.util.scanner - Fatal编程技术网

Java 从扫描仪递归输入的反向编号u顺序uu

Java 从扫描仪递归输入的反向编号u顺序uu,java,recursion,java.util.scanner,Java,Recursion,Java.util.scanner,我在尝试解决递归赋值时遇到困难,但没有成功 赋值的目标是调用函数 reverseNumbers(new Scanner("11 23 31 49 56 611")) 并获得输出 "611 56 49 31 23 11" 虽然不允许使用数组、列表、字符串和方法,但该方法只能声明一个变量 我写的代码不起作用。我得到了一个StackOverflow错误,我理解为什么会得到这个错误。这是因为参数scan没有更改,必须更改它才能使递归工作。但是,我不知道如何使用Scanner实用程序中提供的工具更改输

我在尝试解决递归赋值时遇到困难,但没有成功

赋值的目标是调用函数

reverseNumbers(new Scanner("11 23 31 49 56 611"))
并获得输出

"611 56 49 31 23 11"
虽然不允许使用数组、列表、字符串和方法,但该方法只能声明一个变量

我写的代码不起作用。我得到了一个
StackOverflow
错误,我理解为什么会得到这个错误。这是因为参数
scan
没有更改,必须更改它才能使递归工作。但是,我不知道如何使用
Scanner
实用程序中提供的工具更改输入参数

public static String reverseNumbers(Scanner scan){
   if (!scan.hasNext()) {
      return "";
   }
   else {
      return reverseNumbers(scan)  + " " + scan.nextInt();
   }
}

问题是,在从扫描仪读取数字之前,您正在递归

记住Java。因此,它在
scan.nextInt()之前计算
reverseEnumbers(scan)

这意味着它将继续:

  • 看到
    scan.hasNext()
  • 调用反向枚举器
  • 看到
    scan.hasNext()
  • 调用反向枚举器
  • 看到
    scan.hasNext()
  • 调用反向枚举器
在进行递归调用之前,请先计算scan.hasNext()

int next = scan.nextInt();
return reverseNumbers(scan) + " " + next;

现在,您正在使用正在使用
hasNext()
检测的值(顺便说一句,它应该是
hasNextInt()
;或者使用
String next=scan.next()
),因此您检测到的扫描仪“已”的值将不会再次被检测到。

试图解决它的家庭作业问题以及问题OP的描述。那是罕见的景象+1.