当前位置: 首页 > wzjs >正文

提供服务好的网站制作谷歌搜索优化seo

提供服务好的网站制作,谷歌搜索优化seo,本网站建设在美国,163免费邮箱注册HJ5 进制转换 描述 对于给定的十六进制数,输出其对应的十进制表示。 在本题中,十六进制数的格式为:0x 开头,后跟若干个十六进制数字( 0-9 和 A-F )。其中,A-F 依次代表 10−15 。 输入描述&am…

HJ5 进制转换

描述
对于给定的十六进制数,输出其对应的十进制表示。
在本题中,十六进制数的格式为:0x 开头,后跟若干个十六进制数字( 0-9 和 A-F )。其中,A-F 依次代表 10−15 。

输入描述:
在一行上输入一个十六进制数 s ,代表待转换的十六进制数。
保证 s 转化得到的十进制数 x 的范围为 1≦x≦2^31 −1 。

输出描述:
在一行上输出一个整数,代表 s 对应的十进制数。

示例1

输入:0xFA93
输出:64147
说明:
回忆十六进制转化为十进制的方法:从右往左,将第 i 位乘以 16^i  ,然后求和。
在这个样例中,0xFA93 的第 0 位是 3 ,第 1 位是 9 ,第 2 位是 A ,第 3 位是 F ,因此 0xFA93=3×16^0 +9×16^1 +10×16^2 +15×16^3 =64147 。

思路是用switch语句处理每个字符的值,从0到F,每个对应的数值乘以16的指数次方,累加到sum中。

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 case// int a = in.nextInt();String str = in.nextLine();int len = str.length();int sum = 0;for(int k=2;k<len;k++){int exp = len-k-1;switch(str.charAt(k)){case '0':break;case '1':sum += Math.pow(16,exp);break;case '2':sum += 2*Math.pow(16,exp);break;case '3':sum += 3*Math.pow(16,exp);break;case '4':sum += 4*Math.pow(16,exp);break;case '5':sum += 5*Math.pow(16,exp);break;case '6':sum += 6*Math.pow(16,exp);break;case '7':sum += 7*Math.pow(16,exp);break;case '8':sum += 8*Math.pow(16,exp);break;case '9':sum += 9*Math.pow(16,exp);break;case 'A':sum += 10*Math.pow(16,exp);break;case 'B':sum += 11*Math.pow(16,exp);break;case 'C':sum += 12*Math.pow(16,exp);break;case 'D':sum += 13*Math.pow(16,exp);break;case 'E':sum += 14*Math.pow(16,exp);break;case 'F':sum += 15*Math.pow(16,exp);break;}}System.out.println(sum);}}
}

以下是优化的代码:
处理大小写字母、避免精度丢失和整数溢出。

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextLine()) {String str = in.nextLine().toUpperCase(); // 统一转为大写处理if (!str.startsWith("0X") || str.length() <= 2) {System.out.println(0);continue;}long sum = 0;int len = str.length();int digits = len - 2;// 计算最高位的权值(16的digits-1次方)long power = 1;for (int i = 1; i < digits; i++) {power *= 16;}// 遍历每一位字符for (int k = 2; k < len; k++) {char c = str.charAt(k);int val = 0;if (c >= '0' && c <= '9') {val = c - '0';} else if (c >= 'A' && c <= 'F') {val = 10 + (c - 'A');} else {System.out.println(0); // 非法字符处理return;}sum += val * power;power /= 16; // 权值递减}System.out.println(sum);}}
}

关键修改说明

  1. 大小写处理

    • 使用 toUpperCase() 将输入统一转为大写,避免漏掉小写字母(如 a-f)。
  2. 输入校验

    • 检查输入是否以 0X 开头且长度合法,否则输出 0(根据题目要求可能需要调整)。
  3. 手动计算权值

    • 通过循环累乘计算权值(如 16^3, 16^2...),避免 Math.pow() 的精度问题。
  4. 使用 long 类型

    • sumpower 使用 long 类型,防止大数溢出。

示例验证

  • 输入 0x1A
    转换过程:1*16^1 + 10*16^0 = 26,输出 26

  • 输入 0xFF
    转换过程:15*16^1 + 15*16^0 = 255,输出 255

  • 输入 0x7FFFFFFF
    转换结果:2147483647Integer.MAX_VALUE),用 long 正确存储。

http://www.dtcms.com/wzjs/145237.html

相关文章:

  • iis创建网站今日热点新闻大事件
  • 手机苗木网站源码西安百度推广客服电话多少
  • 标签在数据库wordpress抖音搜索优化
  • 太原高端网站建设天津seo排名公司
  • 多品牌网站建设如何在百度搜索到自己的网站
  • 东莞微信网站建设怎样seo教程免费
  • 网站建设公司源码网络营销图片
  • 开一个网站_只做同城交易seog
  • 番禺网站制作企业税收大数据
  • 绿植网站怎么做微信小程序建站
  • 做学校网站素材图片大全500强企业seo服务商
  • 人工智能绘画官网排名优化
  • 沙朗做网站公司杭州关键词排名提升
  • wordpress办公插件seo网络优化平台
  • 电商要怎么做起来西安seo外包
  • 网络电商平台seo北京公司
  • 做直播网站用什么系统实体店铺引流推广方法
  • 校园微网站建设必应搜索引擎
  • 石家庄微信网站建设b站推广是什么意思
  • 广州网站建设网站开发快速将网站seo
  • 瀑布网站模板市场营销主要学什么
  • 沈阳网站优化 唐朝网络seo文章外包
  • 成都专门做公司网站的公司南京关键词网站排名
  • 制作网站多少钱2022年时事政治热点汇总
  • 会网站开发如何自己赚微信上怎么做广告推广
  • 微信公众交友网站开发推广普通话宣传内容
  • 德州做网站建设的公司网页设计个人主页模板
  • 做天猫网站价格表营销顾问
  • 网站备案协议书百度网页版入口
  • 淘宝网站建设协议流氓网站