gpt4 book ai didi

java - 有没有办法减少我使用的 "if"语句的数量?

转载 作者:行者123 更新时间:2023-11-30 03:14:18 24 4
gpt4 key购买 nike

对于类(class),我正在创建一个二进制到十进制转换器,但我似乎无法让它工作。我使用 ifelse if 语句似乎使我的代码非常困惑。

有没有办法减少困惑?该任务表示,研究以下内容很有用: .toString.substring(int a, int b)java.lang.Math.pow(double a,双b)。无论如何也让它发挥作用吗?所有值,因为它们一开始就被定义为 0,所以最终都为 0。

import java.util.Scanner;


public static void main(String[] args) {

Scanner userInput = new Scanner(System.in);
String binary;
int value0 = 0;
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
int value5 = 0;
int value6 = 0;
int value7 = 0;

System.out.println("Welcome to the Binary to Denary converter!");
System.out.println("Please enter an 8-BIT Binary value:");

binary = userInput.next();
char result0 = binary.charAt(0);
char result1 = binary.charAt(1);
char result2 = binary.charAt(2);
char result3 = binary.charAt(3);
char result4 = binary.charAt(4);
char result5 = binary.charAt(5);
char result6 = binary.charAt(6);
char result7 = binary.charAt(7);

if (result0 == 1){
value0 = 128;
}
else if (result0 == 0){
value0=0;
}
if (result1 == 1){
value1 = 64;
}
else if (result1 == 0){
value1=0;
}
if (result2 == 1){
value2 = 32;
}
else if (result2 == 0){
value2=0;
}
if (result3 == 1){
value3 = 16;
}
else if (result3 == 0){
value3=0;
}
if (result4 == 1){
value4 = 8;
}
else if (result4 == 0){
value4=0;
}
if (result5 == 1){
value5 = 4;
}
else if (result5 == 0){
value5=0;
}
if (result6 == 1){
value6 = 2;
}
else if (result6 == 0){
value6=0;
}
if (result7 == 1){
value7 = 1;
}
else if (result7 == 0){
value7=0;
}
int answer = value0+value1+value2+value3+value4+value5+value6+value7;

System.out.println("Your Denary value is:"+value0+"+"+value1+"+"+value2+"+"+value3+"+"+value4+"+"+value5+"+"+value6+"+"+value7+"="+answer);
}
}

最佳答案

正如其他人在评论中所说,您使用了太多变量。

试试这个:

public static void main (String[] args) throws java.lang.Exception
{
Scanner userInput = new Scanner(System.in);
String binary;
int answer = 0;
System.out.println("Welcome to the Binary to Denary converter!");
System.out.println("Please enter an 8-BIT Binary value:");

binary = userInput.next();

for (int i = 0; i < binary.length(); i++) {
if (binary.charAt(i) == '1') {
answer += java.lang.Math.pow(2, binary.length() - i - 1);
}
}

System.out.println("Your Denary value is:"+answer);
}

如果您正确理解二进制转换,我们会从右向左递增2 的幂。因此,不要检查每个值,而是比较字符串中的每个字符并检查它是否为 1,如果是则递增。

Here是上面代码的工作演示。

关于java - 有没有办法减少我使用的 "if"语句的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32995881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com