private TextView tvOutput;

 int[]feld = new int[30];
        feld[0]=0;
        feld[1]=1;

        for(int i=2; i<30; i++){
            feld[i]=feld[i-2]+feld[i-1];

            tvOutput.setText   (Integer.toString(feld[i]));
        }


代码在每个循环中覆盖了我的var i,因此程序仅在最后显示最后一个数字。但是应该显示所有三十个数字。我怎样才能解决这个问题?

最佳答案

这是因为您在循环的每次迭代中都不断覆盖texttvOutput属性。它显示最后一个数字,因为tvOutput.setText(Integer.toString(feld[29]))是最后一次调用setText的时间。而是将其从循环中删除,然后将转换后的数组传递为字符串:

    int[]feld = new int[30];
    feld[0]=0;
    feld[1]=1;

    for(int i=2; i<30; i++) {
        feld[i]=feld[i-2]+feld[i-1];
    }

    tvOutput.setText(Arrays.toString(feld));

关于java - 如何产生斐波那契数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47380538/

10-10 08:32