public static void main(String[] args) { for(int i:new Fibo(20)) System.out.println(i); }
时间: 2024-05-20 13:12:47 浏览: 8
这是一个Java程序,使用了一个自定义的Fibo类来输出斐波那契数列的前20项。其中,main()方法是程序的入口,for循环中使用了增强型for循环来遍历Fibo对象的迭代器,输出每一项斐波那契数。Fibo类实现了Iterable接口,通过实现迭代器Iterator,使得该类的对象可以被遍历,输出斐波那契数列。
相关问题
public static void main(String[] args) { for(int i:new Fibo(20)) System.out.println(i); }写出它的类
以下是实现该程序的类 Fibo:
```
public class Fibo implements Iterable<Integer> {
private int count;
public Fibo(int count) {
this.count = count;
}
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int n1 = 1, n2 = 1, index = 0;
@Override
public boolean hasNext() {
return index < count;
}
@Override
public Integer next() {
index++;
if (index == 1 || index == 2) {
return 1;
} else {
int sum = n1 + n2;
n1 = n2;
n2 = sum;
return sum;
}
}
};
}
}
```
该类实现了 Java 中的 Iterable 接口,使得它可以被用于 foreach 循环中。在类中,我们使用了匿名内部类实现了一个迭代器 Iterator,该迭代器可以生成斐波那契数列中的前 count 个数。在迭代器中,我们使用了两个变量 n1 和 n2 来存储斐波那契数列中的前两个数,index 变量用于记录当前生成的数的个数。在每次迭代中,我们计算出当前的斐波那契数值 sum,然后将 n1 和 n2 分别更新为当前值和上一个值,以便在下一次迭代中继续生成数列。
class Test{ public static void main(String[] args){ { int i =10; } System.out.println(i); }
这段代码会报错,因为变量 `i` 的作用域仅限于内部的代码块中,无法在外部代码块中访问。在 `System.out.println(i)` 的位置,编译器会提示找不到符号 `i` 的错误。如果你想在外部访问变量 `i`,需要将其声明在外部代码块中。以下是修改后的代码:
```java
class Test {
public static void main(String[] args) {
int i;
{
i = 10;
}
System.out.println(i);
}
}
```
这样修改后,代码就可以成功输出变量 `i` 的值 10。