【发布时间】:2020-02-09 22:14:19
【问题描述】:
我目前是一名学生,刚刚开始学习 Java。因此,对于任何严重的错误,我深表歉意! 我需要将用户输入的值(0-255)转换为十六进制数。 规则是我只能使用 Scanner 的 length() 和 charAt(idx) 方法或 next?() 方法或我在代码中使用的方法。我也不允许使用 while、for 或数组。
你能帮帮我吗?我编写了代码,我知道它不会以这种方式工作,但我不确定该怎么做。 谢谢!
import java.util.Scanner;
public class Hex {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Value?");
int vl = input.nextInt();
int r, n;
String hex = "0123456789ABCDEF";
r = vl % 16;
n = r / 16;
char ch1, ch2;
// Is there a way to use a sort of And-Or condition for two variables or do I need to use multiple ifs?
if (r,n < 9) {
r=ch1;
n=ch2;
}
if (r,n > 9) {
ch1 = hex.charAt(r);
ch2 = hex.charAt(n);
}
int nr1, nr2;
nr1 = ch2;
nr2 = ch1;
System.out.println("Hex = "+nr1 + "" + nr2);
}
}
【问题讨论】:
-
您绝对需要使用复合布尔表达式,而不是您的示例中的
r, n > 9。 -
还有
AND &&和OR ||运算符。例如,if(A == B && B == 0) -
@FailingCoder 小心。您提到的运算符是短路版本。有关此主题的更多信息,请访问Oracle tutorial on Conditional Operators
标签: java