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

在我的例子中,如何删除前导零?

公孙栋
2023-03-14

我做了以下练习:

  1. 做一个把任意数转换成二进制数的代码
  2. 反转二进制数并显示在屏幕上
  3. 计数(并在屏幕上显示)二进制数的开头有多少个零
  4. 去掉反转二进制数开头的所有零。
  5. 将新的二进制数转换回常规数,并在屏幕上显示该数。

目前我被困在第四步,有人能帮我吗?到目前为止,我有:

import java.util.*;


class Main {
  public static void main(String[] args) {

  int woord = 100;

    
  String bin = Integer.toBinaryString(woord);
  String test = new StringBuilder(bin).reverse().toString();

  System.out.println(test);

  String[] parsed = test.split("1");
  System.out.println(parsed.length > 0 ? parsed[0].length() : "0");

  }
}

提前感谢:)

我已经得到了答案,第一个人已经帮了我很多。我还将学习并阅读其他答案。不要觉得有必要发布更多的回复(当然,除非你愿意):)

共有3个答案

太叔富
2023-03-14

要解决第四步的问题,你需要找出这个数字中需要删除的部分。

  • 首先,找到你的String的第一个1,它将是你在缩短的String中保留的第一个字符。
  • 然后需要只保留你的反向字符串的字符从这个字符,但一定要检查是否有一个1,否则你将处理一个java.lang.StringIndexOutOfBoundsExc0019,因为indexOf()如果没有匹配,返回-1:

    int firstOne = test.indexOf('1');
    
    String shortened;

    if(firstOne >=0) //indexOf method returns -1 if no match has been found
       shortened = test.substring(firstOne);
    else 
       shortened = test;

因为这是你得到的一个练习,我将在这里停止,如果你需要第五部分的帮助,请随时评论。

臧令
2023-03-14

首先,你应该使用扫描仪并提示用户输入一个数字。查找零的计数相当于查找第一个1(如果没有1,则查找字符串的长度)。最后,可以使用Integer。parseInt(String,int)将二进制String解析int。喜欢

Scanner scan = new Scanner(System.in);
System.out.print("Enter a number: ");
System.out.flush();
int val = scan.nextInt();
String bin = Integer.toBinaryString(val);
String rev = new StringBuilder(bin).reverse().toString();
System.out.println(rev);
int count = rev.indexOf('1');
if (count < 0) {
    count = rev.length();
}
System.out.println(count);
System.out.println(Integer.parseInt(rev.substring(count), 2));

丌官绍元
2023-03-14

这里涵盖的每一点都有一个非常简单的解决方案:

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a number: ");
    int inputDecimalNumber = scan.nextInt();

    System.out.println("Input number in decimal: "+inputDecimalNumber);
    
     //1.  Make a code that converts any number into a binary number        
     String inputBinary = Integer.toBinaryString(inputDecimalNumber);
     System.out.println("Input number in binary : "+inputBinary);
     
     //2. Reverse that binary number and show it on screen
      String reverseBinary = new StringBuilder(inputBinary).reverse().toString();
      System.out.println("Reverse binary number: "+reverseBinary);

     //3. Count (and show on screen) how many zeros there are at the beginning of the binary number
      int leadingZeros = reverseBinary.indexOf("1") > 0 ? reverseBinary.indexOf("1") : 0;
      System.out.println("Leading zeroes count in reverse binary : "+leadingZeros);

     //4. Remove all the zeros at the beginning of that reversed binary number.
      String reverseBinaryAfterRemovingLeadingZeros = reverseBinary.substring(reverseBinary.indexOf("1"));
      System.out.println("Reverse binary after removing leading zeroes : "+ reverseBinaryAfterRemovingLeadingZeros);
      
     //5. Convert the new binary number back to a regular number and show that number on screen.
      int decimalValue=Integer.parseInt(reverseBinaryAfterRemovingLeadingZeros,2);
      System.out.println("Reverse binary into decimal number : "+decimalValue);
              
      
}

输出

Enter a number: 38
Input number in decimal: 38
Input number in binary : 100110
Reverse binary number: 011001
Leading zeroes count in reverse binary : 1
Reverse binary after removing leading zeroes : 11001
Reverse binary into decimal number : 25
 类似资料:
  • 问题内容: 我有一个以许多空格开头的文本字符串,介于2和4之间。 删除前导空格的最简单方法是什么?(即删除某个字符之前的所有内容?) 问题答案: 该方法将删除以字符串开头的前导空格,换行符和制表符: 编辑 正如balpha在注释中指出的那样,为了 仅从 字符串开头删除空格,应使用:

  • 问题内容: 我有一个包含两个字段(国家和ISO代码)的表: 在某些行中,第二个字段在开头和/或结尾处都有空格,这会影响查询。 有没有一种方法(在SQL中)遍历表并查找/替换field2中的空格? 问题答案: 您正在寻找TRIM。

  • 这是我的XML文件 我只想从xml中删除第二个选项 我的java代码从我的选项元素中删除所有选项。使用

  • 问题内容: 我有几个像这样的字母数字字符串 除去 尾随 零的理想输出为: 前导 尾随零的期望输出为: 去除前导零和尾随零的期望输出为: 目前,我已经按照以下方式进行操作,如果有的话,请提出一种更好的方法: 问题答案: 那基本的 删除尾随和前导零?如果您只想删除尾随零,请改用(仅用于前导零)。 [文档中的更多信息。] 您可以使用一些列表推导来获得所需的序列,如下所示:

  • 在seborn lmmap函数中,我们有一个色调参数,它会自动在右侧绘制一个颜色条。如何禁用/删除颜色条? 下面是一个将生成颜色条的示例代码 我试图调用颜色条对象并将其删除。在传统的matplotlib方式中,我们可以使用 但我看不出它对lmplot有什么作用。另一种替代方式是sns。热图函数,其中提供cbar参数 但在lmplot中,没有cbar选项。在lmplot中,最好的方法是什么?

  • 问题内容: 我想知道当用户单击注销时是否可以删除网站的所有cookie,因为我将其用作删除cookie的功能,但无法正常工作: 有没有一种方法可以删除PHP中某个域的Cookie? 问题答案: PHP setcookie() 从该页面获取的信息将取消设置您域的所有cookie: http://www.php.net/manual/zh/function.setcookie.php#73484