Java 如何将一个数字的二进制数截断为前5个二进制数

Java 如何将一个数字的二进制数截断为前5个二进制数,java,Java,我正在编辑我的问题,因为它写得不正确,理解我的问题让人困惑,我道歉。我读到我应该如何提出一个问题,希望这是可以接受的 所以我完成了代码,我想知道的都是它的工作原理,我希望这是可以问的 我可以对代码进行任何优化吗。我只是想知道,为了将来的代码,我必须编写并成为一名更好的程序员 该程序要求用户输入一个5位数的邮政编码,并使用|表示1,使用:表示0将二进制文件返回到条形码中。所以我需要检查5个数字,这些数字的总和需要是10的倍数,称为检查数字 switch(first){ case "0":

我正在编辑我的问题,因为它写得不正确,理解我的问题让人困惑,我道歉。我读到我应该如何提出一个问题,希望这是可以接受的

所以我完成了代码,我想知道的都是它的工作原理,我希望这是可以问的 我可以对代码进行任何优化吗。我只是想知道,为了将来的代码,我必须编写并成为一名更好的程序员

该程序要求用户输入一个5位数的邮政编码,并使用|表示1,使用:表示0将二进制文件返回到条形码中。所以我需要检查5个数字,这些数字的总和需要是10的倍数,称为检查数字

switch(first){
  case "0":
  first = digit0;
  break;
  case "1":
  first = digit1;
  break;
  case "2":
  first = digit2;
  break;
  case "3":
  first = digit3;
  break;
   case "4":
  first = digit4;
  break;
   case "5":
  first = digit5;
  break;
   case "6":
  first = digit6;
  break;
   case "7":
  first = digit7;
  break;
   case "8":
  first = digit8;
  break;
   case "9":
  first = digit9;
  break; 
  }
我使用了这段代码,并将其复制为5位数字和数字中的支票号码。然后我对每个数字和校验数字使用方法

public static void first(String first){


   String place1 = first.substring(0,1);
   String place2 = first.substring(1,2);
   String place3 = first.substring(2,3);
   String place4 = first.substring(3,4);
   String place5 = first.substring(4,5);

   switch(place1){
   case "0": 
   place1 = ":";
   break;
   case "1": 
   place1 = "|";
   break;
   }

   switch(place2){
   case "0": 
   place2 = ":";
   break;
   case "1": 
   place2 = "|";
   break;
   }

   switch(place3){
   case "0": 
   place3 = ":";
   break;
   case "1": 
   place3 = "|";
   break;
   }

   switch(place4){
   case "0": 
   place4 = ":";
   break;
   case "1": 
   place4 = "|";
   break;
   }

   switch(place5){
   case "0": 
   place5 = ":";
   break;
   case "1": 
   place5 = "|";
   break;
   }

  System.out.print("|" + place1 + place2 + place3 + place4 + place5);
  }
然后我为每个数字复制了这个。我只是想知道这是解决类似问题的正确方法还是有更有效的方法。 比如一个if语句或者类似的东西。我不需要确切的细节,只需要关于这件事的方式


我再次表示歉意,如果这是询问堆栈上的事情的错误方式,并且它想知道为什么。感谢您的时间和努力,谢谢。

在Java中,以0开头的数字文字是八进制(以8为基数),而不是十进制(以10为基数),因此您的数字是:

int digit1 = 00011; // Decimal:     9   Hex:    9   Octal:    11
int digit2 = 00101; // Decimal:    65   Hex:   41   Octal:   101
int digit3 = 00110; // Decimal:    72   Hex:   48   Octal:   110
int digit4 = 01001; // Decimal:   513   Hex:  201   Octal:  1001
int digit5 = 01010; // Decimal:   520   Hex:  208   Octal:  1010
int digit6 = 01100; // Decimal:   576   Hex:  240   Octal:  1100
int digit7 = 10001; // Decimal: 10001   Hex: 2711   Octal: 23421
int digit8 = 10010; // Decimal: 10010   Hex: 271a   Octal: 23432
int digit9 = 10100; // Decimal: 10100   Hex: 2774   Octal: 23564
int digit0 = 11000; // Decimal: 11000   Hex: 2af8   Octal: 25370

你应该把每个数字转换成等价的二进制吗?…还是把邮政编码作为一个整数转换成二进制?你的图像与这个问题无关。因为1)它不清晰。2) 我们不是来帮你做作业的。如果你想让我们读那篇文章,请尽可能根据英语语法重写它(大写
I
),并使用撇号。我建议你用自己的话来解释这个问题,你已经试过了,并回答@Idle\u Mind,因为他已经指出了一些你应该知道的事情,因为这是你的任务!我们是志愿者,愿意帮助你们,但你们需要向我们表明你们关心这件事,帮助我们帮助你们。我不是在骚扰你们,也不是在攻击你们的问题。我确实改进了它。但是,如果你不能接受任何反馈并遵守网站规则,那么就没有别的事可做了。由于OP似乎不想改进问题,使其符合规则,所以我正在向下投票并投票以“不清楚你在问什么”结束投票。@Idle\u请注意,我正在尝试将每个数字转换为其二进制。为什么
int digit1=00011
,你遵循的是什么惯例?请注意,以前导零开始的文本是八进制的,因此值是十进制9。很抱歉,我对代码使用了错误的格式,而不是数字1-9的字符串。我为发了一篇不好的帖子向大家道歉。