java - 在循环中查找字符串的索引

标签 java

我正在尝试创建一个程序,该程序将返回分解为 2 的幂的特定数字。例如 45 将显示为“2^5 + 2^3 + 2^2 + 2^0”,为此我将数字转换为基数 2 并将其转换为字符串以便找到索引并获得我想要的结果。但是当试图返回索引时,我得到的只是找到的第一个索引。谁能帮我解决这部分问题?

import java.util.*;


public class prog{

    public static void main(String[] args){

        Scanner keyb = new Scanner(System.in);
        int val;
        System.out.println("Valor");
        val = keyb.nextInt();
        int aux = val;

        while (aux > 0 ){

            int num = aux % 2;
            aux /= 2;
            String dig = String.valueOf(num);
            String find = "1";
            int index = dig.indexOf(find);

            while (index >= 0) {
                System.out.println(index);
                index = dig.indexOf(find, index + 1);
            }
        }
    }

最佳答案

您的字符串 dig 包含“0”或“1”。

String dig = String.valueOf(num);

你想要这个:

 int power = 0;
 while (aux > 0 ) {
      int num = aux % 2;
      if (num == 1) {
         // Print next term
      }
      power++;
      aux /= 2;
 }

另请注意,与您的指定相比,此算法将以相反的顺序打印术语。

关于java - 在循环中查找字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107555/

相关文章:

java - SPRING BOOT 中的 POST 请求发生 I/O 错误

java - 在 Antlr 中使用访问者编辑 AST

java - 没有这样的表 : goods:

java - 如何打印出一个字符串,其中数组的每个元素为四行

java - 无需 ssl 通过 Internet 进行 JDBC 连接

java - 无法使用 Firebase ML Kit 读取更多 30 个字符的条形码

java - PMD 对象构造期间调用的可覆盖方法

java - 抛异常挂掉流控

java - Android 初学者 : Ads at the Bottom of the XML

java - 如何使用 Java 客户端从 yaml 创建通用 Kubernetes 对象