java - 在这个 Java 的 char 数组代码中 - sum += c - '0' 行的目的是什么?
问题描述
我是 Java 编程的新手,我偶然发现了下面的复制粘贴代码(我发现来自:How to sum digits of an integer in java?)
我很难理解这段代码,基本上想在下面一行解释一下: sum += c -'0'; 这条线的评价是什么?-'0' 的目的是什么?
提前谢谢大家。
导入 java.util.Scanner;
public class RandomPractice1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("enter some digits: "); String digits = input.nextLine(); //try digits 55 int sum = 0; for (char c : digits.toCharArray()) { sum += c -'0'; } System.out.printf("sum of numbers %s is %d\n", digits, sum); //the answer is 10 } }
解决方案
char
Java 中的值具有整数表示,但它不对应于它们的整数值。'0'
是 48,'1'
是 49,依此类推。
假设您只输入十进制数字,那么'0'
从每个数字中减去char
是获得其明显整数值的一种方法,因此当您将它们相加时,您会得到预期的总数。
推荐阅读
- c++ - 安装多个版本时使用特定的 protobuf 版本
- python - Python中的单向OneToOne关系SqlAlchemy
- php - 退出时不重置循环后数据(我怀疑)
- php - 如何使用 Laravel 存储图像?
- ruby - 重定向标准输出时,将 /dev/stdout 作为文件写入失败并出现 Errno::EACCES
- node.js - Discord.js ytdl 错误:输入流:状态代码:416
- linux - 为什么重新启动 AWS ec2 实例(sage maker)时会丢失 shh 密钥?
- python - 创建一个接受单词列表的函数,并返回句子中的一组单词
- angular - 当 proxy.conf.json 中的路径更改时,Java 应用程序无法识别更改
- javascript - 使用钩子更新对象状态