繁体   English   中英

容器调用刚刚终止

[英]container call just terminates

这是主文件

public class program5 {
    
    public static void main(String[] args) {
        Container container = new Container();
        container.add("1 val");
        container.add("2nd val");
        container.add("val 3rd");
        
    }
    
}   

这是容器 class 及其方法

import java.util.Arrays;
import java.util.Iterator;
import java.util.Objects;

ublic class Container implements Iterable<String> {

    /**
     * Holds the elements of a container.
     */
    private String[] values;

    /**
     * Constructor for making new string
     */
    public Container() {
        values = new String[0];
    }
 /**
     * Method for adding elements to a container.
     *
     * @param string - string to initialize a new container element
     */
    public boolean add(String string) {
        try {
            String[] temp = values;
            values = new String[temp.length + 1];
            System.arraycopy(temp, 0, values, 0, temp.length);
            values[values.length - 1] = string;
            return true;
        } catch (ClassCastException ex) {
            ex.printStackTrace();
        }
        return false;
    }

public Iterator<String> iterator() {
        
        return new CustomIterator<String> (values);
        
    }

这是迭代器及其方法

import java.util.Iterator;


public class CustomIterator<String> implements Iterator<String> {
    int IndexPos=0;
     String[] internal_list;
     
     public CustomIterator(String[] internal_list) {
         this.internal_list=internal_list;
     }

    
    public boolean hasNext() {
        if( internal_list.length >= IndexPos + 1) {
            return true;
        }
        return false;
    }

    
    public String next() {
        String val= internal_list[IndexPos];
        IndexPos++;
        return val;
    }

}

好吧,程序应该是这样工作的:只需在容器类中创建一个字符串数组(不能由 java collections 框架算法创建),可以添加,然后迭代器应该开始工作,然后打印所有字符串(其中 3 个)。 但不知何故没有错误,但代码终止。 你能帮我找出导致程序终止的原因吗?

问题是我忘记编写代码来显示任何内容,并且因为我们的容器是可迭代的,如 class 初始化中所述,我们可以将以下代码部分添加到“main”中,此代码将起作用:

for(String str : container) {
            System.out.println(str);
        }
        

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM