- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是新程序员,对一些我认为是递归的代码有一些问题。
public static int sum (int a) {
int input = goodInput(); //get input from below method without having to put its code in this one
if (input==-1)//so user has the ability to exit at any time
return a; //when user has finally entered -1, the final sum is sent out
else; //for scenarios before last input
int b = a + input; //adding the newest input to the sum
int c = sum(b); //throw the total into the method again until -1 is read
return c; //once -1 is read, a in that iteration is sent up through every iteration of the method until the original method gets its return
}
public static int goodInput () { //code to get input of correct type
Scanner input = new Scanner (System.in);
while (!input.hasNextInt()) { //if I put in integer input, the loop should not be entered, but this isn't happening
System.out.println("Integers only please");
input.next();
}
int finalInput = input.nextInt(); //Finally set good input
input.close(); //close scanner
return finalInput;
}
这里的第一个方法显然只是一种求和的方法。我知道有很多其他方法可以将一些数字加在一起,我自己也做过一些,但是当我的类(class)上完关于方法的课并将其写成类似我列出的代码之类的东西时,我首先想到的是作为解决方案,而不是老师最终推荐的。无论如何,我认为这将是一个很好的学习练习。
这段代码在 Eclipse 中没有显示任何错误,所以我很困惑为什么它拒绝工作。事实上,它产生的结果我真的很好奇;它自然会在程序开始时要求输入,但是当我输入 0、1 或任何其他 int 时,尽管扫描仪实际上有一个整数,但会打印“Integers only please”,然后 Java 在程序末尾宣布异常while 循环、goodInput 调用 sum 时、c 返回时、main 方法中 sum 执行时、以及 java.util.NoSuchElementException、java.util.Scanner. throwFor 和 java.util 处。扫描仪.下一个。
我不太清楚这里发生了什么;我最好的猜测是内存问题,但错误从一开始就开始出现!当goodInput 中的代码仅用作main 方法时,效果非常好;不确定为什么通过 sum 调用它会导致问题。
再说一遍,我不只是想要一些求和方法。我只是想知道为什么代码会以这种方式运行,以及使用我的方法实现 sum 实际上是如何工作的。
最佳答案
这里的问题不是递归,而是您的扫描仪
。我不得不承认我对 Scanner
类不太熟悉,但似乎如果你调用 input.close()
然后重新输入 goodInput
稍后,您的 System.in
将关闭。至少,通过调试器进行单步调试,我发现“仅使用整数”这一行在 goodInput
的第二次调用中打印出来。删除 input.close();
行对我来说很有效,并且您的方法按预期工作。
我建议您在主方法中初始化扫描仪,将其作为参数传递,然后在主方法中关闭它。
编辑:Scanner
的 close
方法声明如下:
If this scanner has not yet been closed then if its underlying java.lang.Readable readable also implements the java.io.Closeable interface then the readable's
close
method will be invoked.
因此,当您在 Scanner
上调用 close
时,底层读取器(即 System.in)已关闭。
关于java - 好奇为什么这个递归代码不起作用,并且在另一种方法中表现出非常相似的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963718/
我遇到了一个让我非常难过的问题。但现在看来这一定是一个普遍的问题,我很惊讶我找不到关于它的另一个问题。 基本上,我的网站上会出现一些图标。我希望它们在每台设备上都显示出大致相同的大小——大致是可触摸的
我是一名 Java 专业人士。现在我喜欢转向其他编程语言。谁能建议我哪种编程语言更容易消化,并且该语言具有 Web 开发功能。我对 Web 开发感兴趣。 最佳答案 C# - 网络开发非常好(只需看看这
我需要为不同的 url 发送不同的响应。但是我正在使用的正则表达式不起作用。 有问题的两个正则表达式是 "/v1/users/[^/]+/permissions/domain/HTTP/" (例
让我描述一下我的问题。有一个输入字符串和一个包含数千个字符串的表。我正在寻找搜索与输入字符串最相似* 字符串的最佳方法。搜索应该返回一个包含 ~10 个建议字符串的列表,按相似度排序。字符串在数据库中
我在使用 crypt() 时遇到问题,如果用户有密码(本例中为 password1),并且他们将其更改为 password2,则散列会返回相同的结果。您可以在此处进行测试:旧链接输入 password
我问这个是因为我发现 XML 在视觉上没有吸引力。我知道 XML 非常有名,很有用,而且它被大多数(如果不是全部)程序员接受为一种非常有用的定义和结构化数据的语言;然而,我真的不觉得盯着它看、看着它或
我有工作需要在 14 天内完成。我有5名 worker 。一天正好需要3个 worker 。每个 worker 最多只能工作 9 天。每个 worker 都有自己的日期偏好,每个 worker 每天都
FileStream 或 DB 句柄类型的对象必须正确关闭,因为它在内部使用 Windows 句柄。同样,Threads 也使用 Windows 句柄吧?线程是否有一些内部机制来释放那些 Window
如果这是非常基本的,请原谅。我一直在尝试遍历行数组中的每个单元格包括标题单元格。我可以在 Nokogiri CSS 选择器中使用 OR 运算符吗? thang= Nokogiri::HTML(IO.r
默认情况下,RichTextFx(顶部控件)看起来不像 TextArea(底部控件): 我找到了一种添加圆角的方法(只需从 modena.css 复制并配置 some styles): .virtua
在 64 位 Java 中,每个对象实例往往包含一个 192-bit header , 包含 类指针, 标志和 锁(每个 64 位)。 这可能会导致小对象的大量内存开销。 尼姆的情况是否类似?用两种语
我正在开发一个具有多个功能(通过 tableview 选择)的应用程序,这些功能几乎都做同样的事情,相似的布局、相似的按钮、相似的输入字段等等。但在我相信它们自己的地方有足够的不同类(class)。每
题目地址:https://leetcode-cn.com/problems/similar-rgb-color/ 题目描述 Inthe following, every capital lette
我正在编写 R 代码,我希望它在“非调试”或“调试”模式下运行。在 Debug模式下,我希望代码打印出运行时信息。 在其他语言中,我通常会有某种打印功能,除非打开标志(用于编译或运行时),否则什么都不
我不明白这个OP接受的答案的一部分: Javascript function scoping and hoisting 作者说: " 此外,在这种情况下, function a() {} 行为与相同
我正在做一个bcmp(&v6_addr1,&v6_addr2,sizeof(v6_addr1)) (gdb) p v6_addr2 $15 = {u = {b = "0\001", '\000' ,
我有一个充满按钮的 Canvas,我将其 ID 存储在字典中。 Canvas 很长,带有垂直滚动条。有一种方法可以自动将 View 定位在给定的按钮上吗? 当使用 Text 时,txt.see(pos
我正在尝试使用 Python 2.6 和 PIL 计算两个图像的相似度(读作:Levenshtein 距离)。 我打算给我们e python-levenshtein用于快速比较的库。 主要问题: 什么
换句话说,php $object->method(); 和 $object->property = 'someValue'; 相当于,js: $object.method(); 和 $object.p
我写了一个简单的函数,它接收实现 .index() 的东西和要检查的字符列表。 我的假设是,由于字符串和元组都是不可变的,因此它们具有相似的性能(或者至少,元组的性能优于列表)。相反,元组似乎等同于列
我是一名优秀的程序员,十分优秀!