sc.next().charAt(i) - ‘0‘语句是什么意思

文章解释了在Java编程中,如何通过sc.next().charAt(i)-0的表达式将字符形式的数字转换为实际的数字值。这个过程涉及到字符的ASCII码值,0的ASCII码是48,通过减法可以将代表数字的字符转为对应的整数值。示例代码展示了如何在处理字符串时将字符转换为数字并存入二维数组。
摘要由CSDN通过智能技术生成

       在练习算法时发现有的题解出现sc.next().charAt(i) - '0',开始并不明白其具体含义,经过学习后发现: 

       charAt(i) 返回字符串 s 中索引为 i 的字符,'0' 是字符常量 0 的 ASCII 码值, 0 的 ASCII 码值是 48(十进制),或者 0 x 30 (十六进制)。通过将 s.charAt(i) 减去 '0' ,可以将代表数字字符的 ASCII 码值转换为实际的数字值。

       例如,字符 '5' 的ASCII码值为 53 ,但是表达式 '5' - '0' 的结果为5。

 

 

又比如下面这段代码:

// String s = sc.next();
// arr[i][j] = s.charAt(j) - '0';

arr[i][j] = sc.next().charAt(j) - '0';

       这段代码是将 Scanner 对象 sc 读取的下一个字符串转换为字符数组后提取其中的第 j 个字符,并将其转换为数字,存储在二维数组 arr 的第 i 行第 j 列中。

 

 

需要注意的是:

       char 类型可以用于存储 ASCII 码表示的字符,但是char类型本身并不代表 ASCII 码。在使用    char 类型进行运算时,实际上是对其所代表的 ASCII 码值进行运算。因此,可以说 char 运算使用的是 ASCII 码值,而不是 ASCII 码本身。

(1)(2)

如果对你有帮助,可以点个赞吗!

帮我修改该代码import java.util.*; class IllegalNameException extends Exception{ String name1; public IllegalNameException() { } public IllegalNameException(String name1) { this.name1=name1; } public String toString() { return "IllegalNameException: the first char of name must not be digit, name=" + name1; } } class IllegalScoreException extends Exception{ String score1; public IllegalScoreException() { } public IllegalScoreException(String score1) { this.score1=score1; } public String toString() { return "IllegalScoreException: score out of range, score=" + score1; } } public class Main { public static void main(String args[]) throws IllegalNameException { Scanner s=new Scanner(System.in); while(s.hasNext()) { String sc; sc=s.next(); if(!sc.equals("new")) { s.close(); System.out.println("scanner closed"); break; } Student studen=new Student(); s.nextLine(); String nands; nands=s.nextLine(); String[] arr = nands.split("\\s+"); try { String name=arr[0]; int score=Integer.parseInt(arr[1]); studen.setname(name); studen.addScore(score); System.out.println(studen); } catch (IllegalScoreException e){ System.out.println(e); }catch (Exception e){ System.out.println("java.util.NoSuchElementException"); } } } } class Student { private String name; private int score; public Student() { this.score=0; } public void setname(String name) throws IllegalNameException { if(name.charAt(0)>='0'&&name.charAt(0)<='9') { throw new IllegalNameException(name); } this.name=name; } public String getname() throws IllegalNameException { return name; } public void setscore(int score) { this.score=score; } public int getscore() { return score; } public String toString() { return "Student [" +"name=" + name +", score=" + score +']'; } public int addScore(int score) throws IllegalScoreException { if((this.score+score)<0||(this.score+score)>100) { throw new IllegalScoreException(Integer.toString(this.score + score)); } setscore(this.score + score); return this.score; } }
05-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值