Java 我不想输入列表的大小,但我也想在列表中动态添加数字
我使用List动态存储值,但在二进制搜索程序中输入之前,我必须指定List的大小。 我需要帮助,因为我不想把尺寸作为输入 我试过使用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.
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");