如何将字符串转为数字?求用字符串方法实现三位整数拆分的Java方案
解答你的两个技术问题
一、如何将字符串转换为数字?
在Java里,根据目标数字类型的不同,有几种常用的转换方式:
- 转成整数:用
Integer.parseInt(String s)方法,示例:String numStr = "123"; int num = Integer.parseInt(numStr); - 转成浮点数:用
Double.parseDouble(String s)或Float.parseFloat(String s),示例:String floatStr = "123.45"; double num = Double.parseDouble(floatStr);
注意:如果字符串不是合法的数字格式,这些方法会抛出
NumberFormatException,实际使用时建议用try-catch块包裹处理异常。
二、作业任务:实现B部分(字符串方法)及思路对比
先聊聊你的A部分代码
你的A部分代码逻辑是没问题的,通过整数除法(/)缩小数字的位数,再用取模(%)提取对应位的数字,这是基于数字数学属性的运算思路。
B部分的实现(字符串方法)
这部分的核心思路是把输入的整数先转成字符串,直接提取字符串对应位置的字符,再将字符转换回数字。代码示例如下:
import java.util.Scanner; public class UppgiftAttaB { public static void main(String[] args) { System.out.println("Skriv ett tal som är större än 100"); Scanner read = new Scanner(System.in); int tal = read.nextInt(); // 将整数转换为字符串 String talStr = String.valueOf(tal); // 提取每一位字符并转换为数字:利用ASCII码差值,'0'的ASCII码是48,减去后得到对应数字 int talhund = talStr.charAt(0) - '0'; int taltio = talStr.charAt(1) - '0'; int talen = talStr.charAt(2) - '0'; System.out.println("hundra tal är " + talhund * 100); System.out.println("tio tal är " + taltio * 10); System.out.println("en tal är " + talen * 1); } }
也可以用substring提取子串再转数字,写法如下(效率稍低但更直观):
int talhund = Integer.parseInt(talStr.substring(0, 1));
A和B的思路是否相似?
完全不相似:
- A部分的核心是数值运算:依赖整数除法和取模的数学特性,逐步剥离数字的高位,提取目标位的数值,全程操作的是数字本身。
- B部分的核心是字符序列处理:把数字看作一串字符,直接通过索引定位到对应位置的字符,再转换回数字,全程操作的是字符串/字符。
内容的提问来源于stack exchange,提问作者Adam Lord
相关产品推荐
相关产品推荐

