首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取运行时错误NoSuchElementException。代码中是否需要进行任何更改?

获取运行时错误NoSuchElementException。代码中是否需要进行任何更改?
EN

Stack Overflow用户
提问于 2021-02-28 15:31:56
回答 1查看 296关注 0票数 0

如果一种作物只种植一次,土壤的肥力就会减少30。种植后,如果土地自由种植一个月,肥力增加2倍,如果肥力达到0时,作物将无法进一步种植。编写一个jAVA程序,以获得初始肥力,获得土地在每次种植后空闲的月数,并在肥力变为0之前找到作物成功种植的次数。注1:如果生育力在作物生长过程中变为0,作物就停止生长。注2:如果生育率为0,则停止获取输入。

输入格式:第一输入是一个与土壤初始肥力相对应的整数。接下来的投入是每个月的数量,每次耕种后,土地都是免费的。

输出格式:作物成功种植的次数。

样本输入0

35

3.

1

样本输出0

2

我的代码

代码语言:javascript
运行
复制
class Soil{
    int initial_fert, ncultivations;
    Soil(){
        Scanner sc = new Scanner(System.in);
        initial_fert = sc.nextInt();
    }
    int countCultivations(){
        Scanner sc = new Scanner(System.in);
        int no;
        ncultivations = 0;
        while(true){
            initial_fert = initial_fert - 30; //35->5 40->10 20->-10
            if(initial_fert <= 0) break; //no no yes
            no = sc.nextInt(); //3 1

            for(int i=0; i<no; ++i)
                initial_fert = initial_fert * 2;
            
            ++ncultivations;
        }
        return ncultivations;
    }
}

public class Solution {

    public static void main(String[] args) {
        Soil s = new Soil();
        System.out.println(s.countCultivations());
    }
}

发生的错误

EN

回答 1

Stack Overflow用户

发布于 2021-02-28 15:38:30

您的while循环在两次迭代后不会停止,因此,当没有更多的数据可供使用时,它会要求另一个“空闲的月”,从而导致异常。

调试您的代码--写下来,如果您愿意的话,写在纸上,您认为您的代码会做什么(所以,写下initial_fert是什么,no是什么,initial_fert在下一个循环中将是什么,等等)。你差不多已经在评论中这样做了:你希望它会变成35 /5/ 40 / 10 / 20 / -10。太好了-那就去看看。使用调试器,如果必须使用,则添加System.out语句。一旦您确定您的代码正在执行您希望它做的事情,然后,并且只有在然后将它提交给自动检查器。

如果您无法真正执行这段java代码,而自动检查器是您所拥有的全部,那么就修复它。在您的机器上安装java和一个合适的编辑器来编辑它。或者解决你从现在开始的每一个家庭作业问题,所以做你的调试器,我不认为这会很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66410720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档