数组列表,奇数和偶数停在-1处

时间:2015-10-12 13:53:51

标签: java arraylist

我无法让我的代码工作。我试图获得所有偶数和奇数的数组,但每当我找到-1时我都必须停止。

editorialElement

3 个答案:

答案 0 :(得分:1)

您的代码中存在许多问题:

首先,只有当代码为-1时,代码才会计算下一个整数,否则跳过迭代;

其次,你在分类操作输入上有点混乱: 从未填充数组,因此在 for 语句和模块操作中使用 array 没有任何操作感。 此外, scanner 构造函数没有源。

如果要插入要从System.in进行评估的数字,可以尝试以下固定代码:

import java.util.*;
public class Main {

    private static List<Integer> even = new ArrayList();
    private static List<Integer> odd = new ArrayList();

    public static void classify(Scanner sc){
        Integer number;
        while(sc.hasNextInt()) {
            number = sc.nextInt();
            if(number==-1)
                break;
            if(number % 2 == 0)
                even.add(number);
            else
                odd.add(number);

        }
    }

    public static void display(List<Integer> list){
        for(Integer i : list)
            System.out.println(i);
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        classify(sc);
        display(even);
    }
}

答案 1 :(得分:0)

对于我刚刚在docs中阅读的内容,Scanner类构造函数需要一个source作为参数,并在您的行中:

Scanner sc = new Scanner(/*insert_source_object_here*/);

您没有提供任何来源,以下是可能的构造函数列表:

Scanner(File source)
Scanner(File source, String charsetName)
Scanner(InputStream source)
Scanner(InputStream source, String charsetName)
Scanner(Path source)
Scanner(Path source, String charsetName)
Scanner(Readable source)
Scanner(ReadableByteChannel source)
Scanner(ReadableByteChannel source, String charsetName)
Scanner(String source)

答案 2 :(得分:0)

您的代码中有许多错误

  • java.util.Scanner
  • 的构造函数
  • if(numbers == -1)条件
  • attribut数组是allways null

此代码是对代码的一个小改进

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class EvenOdd{
    private static List<Integer> array;
    private static List<Integer> even;
    private static List<Integer> odd;
    private static Scanner sc;

    public EvenOdd() {
        array = new ArrayList<>();
        even = new ArrayList<>();
        odd = new ArrayList<>();
        sc = new Scanner(System.in);
    }


    public void classify(){
        for(int n : array){
            if(n % 2 == 0) even.add(n);
            else odd.add(n);
        }
    }

    public void fillArray(){
        int n = sc.nextInt();
        do { 
            array.add(n); 
            n = sc.nextInt();
        } while (n != -1);
    }

    public void display(List<Integer> list){
        for(Integer i : list)
            System.out.println(i);
    }

    public List<Integer> getEven() {
        return even;
    }

    public List<Integer> getOdd() {
        return odd;
    }

    public static void main(String[] args){
        EvenOdd eo = new EvenOdd();
        eo.fillArray();
        eo.classify();
        System.out.println("even");
        eo.display(eo.getEven());
        System.out.println("odd");
        eo.display(eo.getOdd());
    }
}