有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查变量是否为int/Integer类型

我目前正在使用

if (element instanceof Integer) 
    return true; 
else 
    return false;

但如果

String element = "5";

它会变成现实。我只想在元素真的是整数值时返回true

我这样做的动机是在学校做的一个练习,我必须做一个抽象的超级课堂观察者。java中有一个列表元素,然后是我的子类Observable HighscoreList。java有一个acceptElement(Object element)方法,如果elements是该子类的正确数据类型,则该方法返回true,并且该方法是从addResult(int element)方法调用的。在我的例子中,我需要整数,而字符串或字符伪装成整数值是不行的

子类方法:

boolean acceptsElement(Object element) {
    if (element instanceof Integer) 
        return true; 
    else 
        return false;
}

public void addResult(int element) {
    int elementsInt;
    if (acceptsElement(element)) {
        for (int i = 0; i < maxSize; i++) {

            try {
                // parsing to int since elements type Object
                elementsInt = (int) elements.get(i);
            } catch (IndexOutOfBoundsException e) {
                elementsInt = 0;
            }

            // adds element to correct position
            if (element < elementsInt || elementsInt == 0) {
                elements.add(i, element);

                // update listeners with new list and position of change
                for (ObservableListListener listListener : listListeners) {
                    listListener.listChanged(this, i);
                }

                // removes elements outside of maxSize
                if (elements.size() >= maxSize) {
                    for (int j = maxSize; j < elements.size(); j++) {
                        elements.remove(j);
                    }
                }
                break;
            }
        }
    } else 
        throw new IllegalArgumentException("!acceptsElement()");
}

超级类方法:

public List<Object> elements;
public List<ObservableListListener> listListeners;

abstract boolean acceptsElement(Object element);

    protected void addElement(int index, Object element) {
        if (this.acceptsElement(element)) {
            elements.add(index, element);

            // update listeners with new list and position of change
            for (ObservableListListener listListener : listListeners) {
                listListener.listChanged(this, index);
            }
        } else 
            throw new IllegalArgumentException("!acceptsElements()");
    }

恐怕我对如何组织一切都很在所难免。我需要通过jTest考试。它告诉我,我应该为“observableList.addElement(“5”);”抛出一个非法的argumentException


共 (1) 个答案

  1. # 1 楼答案

    我错过了比赛

    else 
        throw new IllegalArgumentException("!acceptsElement()");
    

    在addElement(对象元素)-方法中。我只在addElement(int-index,Object-element)方法中有它

    超级课堂现在看起来更像这样:

    public List<Object> elements;
    public List<ObservableListListener> listListeners;
    
        abstract boolean acceptsElement(Object element);
    
        protected void addElement(int index, Object element) {
            if (acceptsElement(element)) {
                elements.add(index, element);
    
            // update listeners with new list and position of change
            for (ObservableListListener listListener : listListeners) {
                listListener.listChanged(this, index);
            }
        } else 
            throw new IllegalArgumentException("!acceptsElement()");
    }
    
    protected void addElement(Object element) {
        if (acceptsElement(element)) {
            elements.add(element);
    
            // update listeners with new list and position of change
            for (ObservableListListener listListener : listListeners) {
                listListener.listChanged(this, elements.indexOf(element));
            }
        } else 
            throw new IllegalArgumentException("!acceptsElement()");
    }