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