当前位置: 首页 > 知识库问答 >
问题:

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

浦思源
2023-03-14

我使用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");
            }   
        }
    }
}

现在我希望用户输入元素,直到他想要,然后使用二进制搜索找到元素的索引

共有1个答案

松增
2023-03-14

您的问题实际上是输入完成后如何终止扫描仪的重复问题?。

但这里有一些建议可以让你的程序正常运行。

这部分代码不正确。

    int left=L.get(0);
    int right=L.get(n-1);

您需要将左侧和右侧设置为搜索的边界 - 而不是用户在这些位置输入的值。

    int left=0;
    int right=L.size() - 1;

然后当你需要比较用户输入的值时。

    if (L.get(m) < h)

五十、 indexOf(m)实际上没有意义。如果你有L.indexOf(L.get(m)),它就可以工作,但这与m一样。

    System.out.println("Element found at index:" + m + " starting from 0");
 类似资料:
  • null 作者(PK) AuthorName Pubid(PK) pubName 书籍ID(FK) authorid null null 我应该只获得一行查询以获得以上结果。我写的是: 但相反,我得到了许多具有重复数据的行。

  • 问题内容: 我有一长串的整数列表(代表句子,每个句子的大小不同),我想使用tf.data库进行输入。每个列表(列表列表中的列表)都有不同的长度,并且出现错误,可以在此处重现: 我得到的错误是: 有没有办法做到这一点? 编辑1:明确一点,我不想填充列表的输入列表(这是包含超过一百万个元素的句子列表,长度不同),我想使用tf.data库在一个正确的方法是使用长度可变的列表列表。 问题答案: 您可以用来

  • 我想要列列表和它的表名在数据库中的列具有所有空值。 此表太大,有些列只有空值。 我想要一个存储过程,列出表中没有任何数据的列(即NULL)。 这样我就可以削减列的数量。 我只是展示了几个专栏,这样你就可以阅读了。原始表有324列和数百万行数据。对于该代码来说,性能不是一个紧迫的问题。我需要这个只是为了内部目的。 这是mysql解决方案,我需要一个SQL服务器解决方案

  • 它给出了一个错误: 无效语法:打印srt([5,2,4,1,3])

  • 问题内容: 我以前创建了用户表。现在,我创建了一个新迁移,以在架构内创建一个新的books表。当我尝试运行命令时 表明: 这是我的新迁移表: 如何摆脱错误? 问题答案: 你需要跑步 如果仍然失败,则只需删除所有您可能要做的表,因为您的迁移表似乎混乱了,或者您在运行前一个回滚时的用户表没有删除该表。 编辑: 发生这种情况的原因是您先前运行了一个回滚,并且在代码中有一些错误或没有删除该表。但是,这仍然

  • 我以前创建了用户表。现在,我已经创建了一个新的迁移,以便在我的模式中创建一个新的books表。当我尝试运行命令时 它表明: 这是我的新迁移表: 我怎样才能消除这个错误?