日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 洛谷 P1055 ISBN号码

發布時間:2025/3/21 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 洛谷 P1055 ISBN号码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:https://www.luogu.com.cn/problem/P1055

輸入格式

一個字符序列,表示一本書的ISBN號碼(保證輸入符合ISBN號碼的格式要求)。

輸出格式

一行,假如輸入的ISBN號碼的識別碼正確,那么輸出Right,否則,按照規定的格式,輸出正確的ISBN號碼(包括分隔符-)。

輸入輸出樣例

輸入
0-670-82162-4

輸出
Right

輸入
0-670-82162-0

輸出
0-670-82162-4

說明/提示
2008普及組第一題

代碼實例:

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//首先輸入一個字符串,例:0-670-82162-4String a = scanner.next();//看題意:sum代表從首位數乘起*1*2*3*4...一直乘到9之和;count就是計數器從1-9int sum = 0,count = 1;//這里定義mod的意義是:不用再寫判斷,當余數等于10的時候,識別碼為大寫字母X,直接獲取mod[sum%11],如果sum%11 = 10,那么mod[10]='X'char mod[] = new char[]{'0','1','2','3','4','5','6','7','8','9','X'};for (int i = 0; i < a.length()-1; i++) {if(a.charAt(i) == '-') {//continue不懂的上百度搜索,這里簡單說一下,如果說遍歷到分隔符'-'的話,就結束本次循環,下面的語句都不執行,而執行下一次循環continue;}//這里就是計算sum值//a.charAt(i) - '0',這段代碼在下面詳細解釋sum += (a.charAt(i) - '0')*count++;}if(mod[sum%11]==a.charAt(a.length()-1)) {System.out.println("Right");}else {for (int i = 0; i < a.length(); i++) {if(i==a.length()-1) {System.out.print(mod[sum%11]);}else {System.out.print(a.charAt(i));}}}scanner.close();}}

代碼詳解

sum += (a.charAt(i) - '0')*count++;

上面這行代碼中是怎么得到sum=158呢?

首先我們了解一下charAt()這個函數

charAt()方法從一個字符串中返回指定的字符的值
例如:

public class Main{public static void main(String[] args) {String a = "abc123";System.out.println(a.charAt(0));} }

輸出

a public class luogu1_5_1055_2 {public static void main(String[] args) {String a = "abc123";System.out.println(a.charAt(3));} }

輸出

1

注意:此時并不會輸出其ACSLL碼值

當執行一下代碼的時候:

public class Main{public static void main(String[] args) {String a = "abc123";int sum = (a.charAt(0) + a.charAt(1));System.out.println(sum);} }

輸出

195//這個就是'a'的ACSLL值97+'b'的ACSLL值98=195

知識點:當執行加法運算的時候,由于返回的類型是int類型,java自動將低位的數據類型轉換為高位的數據類型,本題就是將char類型轉化為int計算,看下面的圖你就懂了

所以,我們來說上面這行代碼:

sum += (a.charAt(i) - '0')*count++;

'0’的ACSLL值為48=
每次取出來的a.charAt(i)分別為:
‘0’,‘6’,‘7’,‘0’,‘8’,‘2’,‘1’,‘6’,‘2’
對應的ACSLL值為:
== 48,54,55,48,56,50,54,50

相減之后就得到了相應的結果

總結

以上是生活随笔為你收集整理的Java 洛谷 P1055 ISBN号码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。