有 Java 编程相关的问题?

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

java如何实现此功能?

我是一个初学者,我想在eclipse中编写Java代码。该程序获取两个LinkedList整数(例如ab),并生成一个LinkedList(例如d),其中每个元素都是ab中元素的总和。但是,我不能从ab添加这两个元素,因为它们是对象

例如:

a=[3,4,6,7,8]
b=[4,3,7,5,3,2,1]
------
d=[7,7,13,12,11,2,1]

共 (6) 个答案

  1. # 1 楼答案

    我想你的问题是:

    如果您试图计算的对象的引用属于类Object,那么是的,您有问题,需要将它们转换为整数:

    Object o1=object1FromTheList;
    Integer integer1=(Integer)o1;
    
    Object o2=object2FromTheList;
    Integer integer2=(Integer)o2;
    

    现在,如果您的问题是从它们计算值,如(您得到编译错误):

    int sum=integer1+integer2;
    

    这意味着您的编译器的版本早于1.5,不支持自动装箱和自动取消装箱:

    自动装箱允许简单的代码实现转换:

    整数->;原语int

    ->;原始

    就这样吧

    亮点:

    如果没有自动装箱,您必须编写:

    Integer five=new Integer(5); // very annoying to write this as it is isn't it
    

    自动装箱允许您这样编写:

    Integer five=5; // nicer shorter and easy to understand
    

    如果没有自动取消装箱,您需要编写:

    Integer six=new Integer(6); // no auto-boxing
    int _six=six.getValue(); // no auto-unboxing if you have to do some computation this could be hell
    

    自动取消装箱允许您这样编写:

    Integer six=6; // with auto-boxing
    int _six=six; // with auto-unboxing much nicer
    

    希望这有帮助

    亚当

  2. # 2 楼答案

    您需要使用泛型来告诉编译器列表中有整数

    List<Integer> a = new LinkedList<Integer>();
    
  3. # 3 楼答案

    这是家庭作业吗?如果是这样,我不会给你现成的代码,但会给你指出正确的方向

    要在Java中创建列表,可以执行以下操作:

    List<Integer> list = new ArrayList<Integer>();
    

    然后通过调用list.add(Integer)将元素添加到列表中

    然后,您可以像这样迭代List

    Integer sum = new Integer(0);
    for(Integer i : list)
    {
        sum+=i;
    }
    

    把这些放在一起,再添加一个列表,你就有了答案

  4. # 4 楼答案

    我假设您将LinkedList定义为:

    LinkedList a, b;
    

    在这种情况下a.get()将返回一个Object。Java支持generics,允许您执行以下操作:

    LinkedList<Integer> a, b;
    

    现在a.get()将返回一个Integer,而不是一个Object。您可以判断LinkedList是泛型的,因为javadoc头显示“Class LinkedList<E>”--E是泛型类型。^{}的定义是public E get(int index)——因为它的返回类型是E,所以您为LinkedList的泛型类型指定的任何内容都将是该方法返回的类型

    类似地,^{}方法的签名是public boolean add(E o),因此它只接受整数作为参数,如果您尝试添加错误的类型,它将在编译时失败

    // This is fine
    LinkedList a;
    a.add(1);
    a.add("foo");
    
    // This will fail
    LinkedList<Integer> a;
    a.add("foo");
    
  5. # 5 楼答案

    我猜这是家庭作业。我会给你一些代码,但我希望你能从中学习,而不是复制和粘贴。。。人们似乎认为这是错误的,但在我的书中,如果你不够聪明,不能从现成的代码中学习,而只是简单地复制和粘贴,那么最终它将表明你什么也没学到

    当我刚开始的时候,我喜欢在我自己尝试之后得到我所面临问题的答案。我学到了很多,希望你也能

    正如其他人所说,解决方案基本上是将您的列表声明为通用整数列表:

    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    
    
    /**
     * @author Savvas Dalkitsis
     */
    public class Test {
    
        public static void main(String[] args) {
            List<Integer> one = Arrays.asList(new Integer[] {3,4,6,7,8});
            List<Integer> two = Arrays.asList(new Integer[] {4,3,7,5,3,2,1});
            List<Integer> add = addLists(one, two);
            printList(one);
            printList(two);
            printList(add);
        }
    
        public static List<Integer> addLists(List<Integer> a, List<Integer> b) {
            List<Integer> r = new LinkedList<Integer>();
            Iterator<Integer> it = a.iterator();
            for (Integer i: b) {
                r.add(i+(it.hasNext()?it.next():0));
            }
            while (it.hasNext()) {
                r.add(it.next());
            }
            return r;
        }
    
        public static void printList(List<?> list) {
            for (Object o : list) {
                System.out.print(o.toString()+" , ");
            }
            System.out.println();
        }
    
    }
    
  6. # 6 楼答案

    如果您无法更改正在使用的列表类型,请在谷歌上搜索java typecast

    如果您确实可以控制列表的类型,请使用其他人提到的泛型