Java 我不想输入列表的大小,但我也想在列表中动态添加数字

Java 我不想输入列表的大小,但我也想在列表中动态添加数字,java,search,arraylist,binary-search,Java,Search,Arraylist,Binary Search,我使用List动态存储值,但在二进制搜索程序中输入之前,我必须指定List的大小。 我需要帮助,因为我不想把尺寸作为输入 我试过使用length,但不起作用,有人建议我使用size(),但我不知道如何使用它 import java.util.*; class Binary { public static void main(String args[]) { Scanner s=new Scanner(System.in); System.out.

我使用List动态存储值,但在二进制搜索程序中输入之前,我必须指定List的大小。 我需要帮助,因为我不想把尺寸作为输入

我试过使用
length
,但不起作用,有人建议我使用
size()
,但我不知道如何使用它

import java.util.*;

class Binary
{
    public static void main(String args[])
    {
        Scanner s=new Scanner(System.in);
        System.out.println("Enter size of array");
        int n=s.nextInt();
        System.out.println("Enter array elements in ascending order");
        List<Integer> L=new ArrayList<>();
        for(int i=0;i<n;i++)
        {
            int e=s.nextInt();
            L.add(e);
        }
        System.out.println("Enter the element you want to search");
        int h=s.nextInt();
        int left=L.get(0);
        int right=L.get(n-1);
        while(left<=right)
        {
            if(h<=right){
                int m=(left+right)/2;

                if(m==h)
                {
                    System.out.println("Element found at index:"+L.indexOf(m)+" starting from 0");
                    return;
                }
                if(m>h)
                {
                    right=m-1;
                }
                if(m<h)
                {
                    left=m+1;
                }
            }
            else{
                System.out.println("Element not present");
            }   
        }
    }
}
import java.util.*;
类二进制
{
公共静态void main(字符串参数[])
{
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入数组大小”);
int n=s.nextInt();
System.out.println(“按升序输入数组元素”);
列表L=新的ArrayList();

因为(inti=0;i你的问题实际上是一个重复的问题

但是这里有一些让你的程序工作的建议

这部分代码不正确

    int left=L.get(0);
    int right=L.get(n-1);
您需要将左侧和右侧设置为搜索的边界,而不是用户在这些位置输入的值

    int left=0;
    int right=L.size() - 1;
然后,当您需要比较用户输入的值时

    if (L.get(m) < h)

如果您不希望用户指定要输入的元素数,您希望他如何表示已输入所有元素?您可以读取数字,直到用户输入转义号。然后使用
L.get(L.size()-1);
而不是
L.get(n-1);
如果我们将0声明为转义元素,那么用户将无法在两者之间输入0,因此我们不能将任何数字用作转义元素。@SomeFire字符串如何,
结束
?您需要将数字输入多行,或者您可以将单行输入作为数字数组,并用空格或其他方式将其拆分分隔符(因此不需要输入结尾,它将是enter键)
    System.out.println("Element found at index:" + m + " starting from 0");