【问题标题】:Array with Binary, find where the 1's are and output the index of the 1's as a subset带有二进制的数组,找到 1 的位置并将 1 的索引作为子集输出
【发布时间】:2019-04-15 06:13:58
【问题描述】:

此代码的目标是找出数组中出现的 1 的数量,并基本上创建另一个数组,其中包含 1 出现位置的索引。例如,假设我有一个数组 {0, 0, 1, 0, 1},输出应该是 {3, 5}。 (在这种情况下,我们忽略了数组的第一个索引)这是我目前所拥有的:

public class array_binary {

    static String string(int [] B) {

        ArrayList<Integer> result = new ArrayList<>();


        for(i = 0; i < B.length; i++) {
            if(B[i]==1) {
                result.add(i+1);
            }   
        }

    }

但是代码没有输出任何东西...我很困惑下一步该做什么?这甚至是代码的良好开端吗?

【问题讨论】:

  • i &lt;= B.length; 应该是i &lt; B.length;
  • if(n==1) 永远不会为真,您永远不会将n 的值从0 更改。必须是if(B[i] == 1)
  • @GBlodgett 谢谢你!
  • 另外,您想打印i,而不是B[i]。前者是你的索引,后者是你数组中的值。

标签: java


【解决方案1】:
package test;

import java.util.ArrayList;

public class array_binary {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] input = {0,0,1,0,1};
        ArrayList<Integer> result = new ArrayList<>();
        for(int i =0 ; i< input.length;i++)
        {
            if (input[i]== 1)
            {
                result.add(i+1);
            }
        }
        System.out.println(result.toString());


    }

}

几个指针:

  1. 我们实际上并没有忽略第一个索引,在数组中,索引开始 0,但我们人类从 1 读取它,所以这就是你的样本数据 说3,5,就数组索引而言应该是2,4

  2. 我使用过 ArrayList,它基本上只是一个数组,但具有动态大小。因此,我们不是在开始时声明大小,而是 声明一个数组并根据需要继续向其中添加内容。

【讨论】:

  • .toString() 函数返回字符串数据类型。因此,如果您有String res = result.toString(),然后在您的函数中执行return res,它将返回一个字符串。
  • 在Java中,类名是用CamelCase写的。
  • 在循环之后添加 res =result.toString()。因为在循环之后,只有结果变量才会有任何东西。在它为空之前。
  • 在初始化 B System.out.println(setToString(B)); 后在 main 函数中添加这一行
  • 非常感谢您的帮助!你太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多