java - 如何在 Java 中忽略部分输入?
问题描述
我需要制作一个可以将十六进制值转换为十进制的程序。我让程序工作,但无论输入的十六进制值是否包含前面的“0x”,我都需要让我的程序显示相同的输出。
这是我的代码。
import java.util.Scanner;
public class Main {
public static long hex2decimal(String s){
String digits = "0123456789ABCDEF";
int val = 0;
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long decimal;
System.out.println("Please enter the hex string:");
String s = sc.next().toUpperCase();
decimal = hex2decimal(s);
System.out.println(decimal);
}
}
解决方案
为什么不应该使用Integer.parseInt("121",16),而是使用自定义逻辑将十六进制转换为十进制。这里 16 是基数,告诉数字是十六进制,将转换为十进制。
System.out.println(Integer.parseInt("121",16));
推荐阅读
- karate - 如何使用空手道框架在 URL 之间动态创建具有路径的 URL
- javascript - 如何根据某些分隔符解析 html 字符串?
- python - 带有 continue 关键字的无限 while 循环
- python - 使用应用程序工厂模式将 Celery 与 Flask 集成:最大递归深度误差
- mysql - mysql 8.0.15 用户的哪个 JDBC 连接器
- python - 无法关闭 gtk 对话窗口
- sql - T-SQL 组合表
- python - 从 ubuntu 服务器写入 csv 时没有数据?
- c# - 无法打印匿名类型变量的值
- javascript - 测试 DOM 茉莉花