java - 如果数组中有重复的数字,该程序似乎不起作用
问题描述
如果用户在数组中搜索一个数字,系统应该打印出该数字所在的索引,否则它会打印出 search not found。到目前为止,它仅在数组中没有重复数字时才有效。
我尝试删除中断,但这会阻止程序打印也包含搜索编号的第二个索引。
任何帮助将不胜感激,谢谢!
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] array = new int[10];
array[0] = 6;
array[1] = 2;
array[2] = 8;
array[3] = 1;
array[4] = 3;
array[5] = 0;
array[6] = 9;
array[7] = 8;
System.out.print("Search for? ");
int searching = Integer.valueOf(scanner.nextLine());
for (int i = 0; i < array.length; i++) {
int input = array[i];
if (searching == input) {
System.out.println(searching + " is at index " + i);
break;
}
else if (searching != array[i] && i == (array.length - 1))
{
System.out.println(searching+" was not found!");
break;
}
}
}
解决方案
Scanner scanner = new Scanner(System.in);
int[] array = {6,2,8,1,3,0,9,8};
System.out.print("Search for? ");
int searching = scanner.nextInt();
ArrayList positions=new ArrayList();
for (int i = 0; i < array.length; i++) {
int input = array[i];
if (searching == input) {
positions.add(i);
}
}
if(positions.size()>0) {
for(int x=0;x<positions.size();x++) {
System.out.println(searching+" is at index "+ positions.get(x));
}
}
else {
System.out.println(searching+" was not found!");
}
要使用扫描仪接收 int,使用 nextInt () 方法更容易。在第一个中,您可以累积在 arraylist 中搜索的数字匹配的位置,然后检查 arraylist 是否不为空,并打印找到该数字的所有位置。如果列表为空,则打印未找到的消息。
推荐阅读
- scala - 如何以格式化的方式打印数组数组?
- ios - 具有动态高度和半宽的 UICollectionview 单元格
- django - Haystack Django 一次搜索多个字段
- python - 如何根据特定规则标记系列中的值?
- java - 通过pojo获取firebase自动生成Id,我模型类的getter()方法返回null
- pandas - 无法在 Pandas 中填写空白值
- javascript - 在事件 onclick 中更改类值 javascript?
- javascript - 读取随机行 com 文件
- python - python'双重理解'列表到dict
- java - 如何在 Android 10 中打开活动(传入 voip 呼叫)