如何获取被截断为前5个二进制数字的数字的二进制数

时间:2019-04-30 21:38:57

标签: java

我正在编辑我的问题,因为该问题的书写方式不正确,并且难以理解我的要求,我深表歉意。我读了我应该如何提出一个问题,希望这是可以接受的。

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

程序要求用户输入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语句之类的东西。我不需要确切的细节,而只是处理它的方式。

我再次道歉,如果这是不正确的方式来询问堆栈中的东西,以及是否想知道原因。感谢您的时间和精力,谢谢。

1 个答案:

答案 0 :(得分:2)

在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