Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何显示arraylist中的偶数和3的倍数_Java_Arraylist - Fatal编程技术网

Java 如何显示arraylist中的偶数和3的倍数

Java 如何显示arraylist中的偶数和3的倍数,java,arraylist,Java,Arraylist,对不起,也许我没有解释清楚。这是我的做法 输入一个正整数。如果输入不是正的,那么您的算法应该输出一条错误消息,并重新提示用户输入。此过程应继续循环,直到输入有效。然后,您的算法应该输出输入是否为偶数和3的倍数。注意:您的解决方案必须适当使用子模块 我必须创建一个从用户输入中获取正数的方法,并且我需要从这个ArrayList中显示偶数和3的倍数。我已经为此编写了代码,但我一直在为如何使用另一个子模块来显示此ArrayList而挣扎 import java.util.ArrayList; impor

对不起,也许我没有解释清楚。这是我的做法

输入一个正整数。如果输入不是正的,那么您的算法应该输出一条错误消息,并重新提示用户输入。此过程应继续循环,直到输入有效。然后,您的算法应该输出输入是否为偶数和3的倍数。注意:您的解决方案必须适当使用子模块

我必须创建一个从用户输入中获取正数的方法,并且我需要从这个ArrayList中显示偶数和3的倍数。我已经为此编写了代码,但我一直在为如何使用另一个子模块来显示此ArrayList而挣扎

import java.util.ArrayList;
import java.util.*;

public class Array {

    public static void main(String[] args) 
    {

        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list;
        list = new ArrayList<Integer>();
         int number = -1;
        printList(list, number );
        System.out.println("Enter number.  Enter 0 to end.");
        while (true) 
        {
            System.out.print(" ");
            number = sc.nextInt();

        while( number < 0)
        {
        System.out.print("Enter your next positive integer, or 0 to end: ");
        number = sc.nextInt();    
        }
         if (number == 0)
                break;
            list.add(number);            
        }     

    }
        public static void printList (ArrayList<Integer> list, int number)
        {
            for(int i = 0;i <= number.size(); i++)
            {
            if(i % 2 ==0 && i % 3 ==0)
            {
                 System.out.println(list(i));
            }
            }
        }
    }

好的,我明白你的问题了,看起来你无法打印列表,你应该稍微修改一下你的代码

您只需在while循环之后粘贴printList

while (true) 
{
    System.out.print(" ");
    number = sc.nextInt();

    while( number < 0)
    {
        System.out.print("Enter your next positive integer, or 0 to end: ");
        number = sc.nextInt();    
    }
    if (number == 0)
        break;
    list.add(number);            
}
printList(list);
您的printlist方法不正确,应该是这样的

public void printlist(List<Integer> numberList){
    for(int i = 0;i <= numberList.size(); i++)
    {
        if(i % 2 ==0 && i % 3 ==0)
        {
             System.out.println(numberList.get(i));
        }
    }
}
希望这有帮助! 祝你好运

printList方法可以从循环内部调用 必须检查列表的大小,而不是数量。 请参阅下面的代码帮助

public class Array {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list;
        list = new ArrayList<Integer>();
        int number = -1;
        System.out.println("Enter number.  Enter 0 to end.");
        while (true) {
            System.out.print(" ");
            number = sc.nextInt();

            while (number < 0) {
                System.out.print("Enter your next positive integer, or 0 to end: ");
                number = sc.nextInt();
            }
            if (number == 0) {
                sc.close();
                break;
            }
            list.add(number);
            printList(list, number); // Moved the print here.
        }

    }

    public static void printList(ArrayList<Integer> list, int number) {
        for (int i = 0; i <= list.size(); i++) { // You have to get size on
                                                 // list.
            if (i % 2 == 0 && i % 3 == 0) { // Are you planning to check the
                                            // index or the content in the list
                                            // ?
                System.out.println(list.get(i)); // Get the number from list
            }
        }
    }
}

我想你正在寻找一个这样的程序,对吗

public class Array {

    public static void main(String... args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        int number;
        do {
            System.out.print("Enter a positive integer or 0 to end: ");
            number = sc.nextInt();
            if (number > 0) { list.add(number); }
        } while (number != 0);

        for (int i = 0; i < list.size(); i++) {
            int number = list.get(i);
            if (number % 2 == 0 && number % 3 == 0) {
                System.out.println(number);
            }
        }
    }
}

从用户那个里得到一个正数和问题的其余部分有什么关系?如果只要求一个数字,则列表只有一个长度,并且列表中没有偶数定位值或3个定位值的倍数。到底是什么问题?代码无法编译!如果编译错误是您的问题,请在问题中显示编译错误并询问。您应该在printList中使用list.size而不是number.size。。。。因为list是一个对象,number是一个原语。对printList的调用不应该在main的底部,在while循环之后吗?它当前位于顶部…仍然有IndexOutOfBoundsException。并且list.add仍然错误地放置在此解决方案中,因为数字<0用于错误捕获,因为输入应该是正数,并且对于小于零的负数,该检查为真。更好!现在它应该得到我的+1=在printList中:如果使用java 8:numberList.stream.filteri->i%2==0&&i%3==0.forEachSystem.out::println更优雅:System.out.printlnlist.geti;//从列表中获取号码是
list.stream().filter(num -> num % 2 == 0)
             .filter(num -> num % 3 == 0)
             .forEach(System.out::println);