Java 从字符串中添加单个数字
我试图把一个字符串中的13个数字加在一起。我认为使用while循环是最好的方法,但我认为我把事情搞砸了。这是我的密码:Java 从字符串中添加单个数字,java,Java,我试图把一个字符串中的13个数字加在一起。我认为使用while循环是最好的方法,但我认为我把事情搞砸了。这是我的密码: import java.util.Scanner; public class ISBNChecker{ public static void main(String [] args){ String isbnNumber; int isbnTotal= 0; int index = 0; Scanner
import java.util.Scanner;
public class ISBNChecker{
public static void main(String [] args){
String isbnNumber;
int isbnTotal= 0;
int index = 0;
Scanner scnr = new Scanner(System.in);
System.out.println("Enter a 13 digit ISBN Number:");
isbnNumber = scnr.nextLine();
if (isbnNumber.length() != 13) {
System.out.println("Error- 13 numerical digits required");
}
char num = isbnNumber.charAt(index);
while (index <13) {
if (index % 2 == 0) {
isbnTotal = isbnTotal + num;
index =index + 1;
}
else {
isbnTotal = isbnTotal + (3 * num);
index = index + 1;
}
}
System.out.println(isbnTotal);
if (isbnTotal % 10 == 0) {
System.out.println("Valid ISBN Number");
}
else {
System.out.println("Invalid ISBN Number");
}
}
}
import java.util.Scanner;
公共类ISBNChecker{
公共静态void main(字符串[]args){
字符串isbnNumber;
int isbnTotal=0;
int指数=0;
扫描仪scnr=新扫描仪(System.in);
System.out.println(“输入13位ISBN编号:”);
isbnNumber=scnr.nextLine();
如果(isbnNumber.length()!=13){
System.out.println(“错误-需要13位数字”);
}
char num=isbnNumber.charAt(索引);
虽然(index嗯,您似乎允许字符串输入长度大于或小于13
然后您应该在此行之后返回:-
System.out.println("Error- 13 numerical digits required");
否则,代码将运行,即使它不是所需的长度我发现了您的错误,您犯了一些错误
int index = 0;
while (index < 13) {
char num = (char) (isbnNumber.charAt(index) - '0');
if (index % 2 == 0) {
isbnTotal = isbnTotal + num;
} else {
isbnTotal = isbnTotal + (3 * num);
}
index++;
}
不在while循环中,导致代码始终使用相同的字符运行
问题2
当做
char num = isbnNumber.charAt(index);
实际上,您正在获取字符的ASCII值。您无法获取正确的数字值。因此,您必须执行以下操作:
char num = (char) (isbnNumber.charAt(index) - '0');
请注意,零位于两个单引号之间,这是因为我们需要零ASCII字符(38)的值
“1”-“0”=1
“9”-“0”=9
编辑:我忘了说你应该先检查字符是否是一个数字,否则你可能会尝试执行类似“a”-“0”的操作,它将等于17
import java.util.Scanner;
public class ISBNChecker{
public static void main(String [] args){
String isbnNumber;
int isbnTotal= 0;
int index = 0;
Scanner scnr = new Scanner(System.in);
System.out.println("Enter a 13 digit ISBN Number:");
isbnNumber = scnr.nextLine();
if (isbnNumber.length() != 13) {
System.out.println("Error- 13 numerical digits required");
}
//Perform other operations if it's length is 13
else{
//initiliizing num for 1st time + convert the character at index to
number
int num = Character.getNumericValue(isbnNumber.charAt(index));
while (index <13) {
if (index % 2 == 0) isbnTotal = isbnTotal + num;
else isbnTotal = isbnTotal + (3 * num);
//increment outside of if else - less code
index = index + 1;
//verify if index is not out of bounds for charAt()
//then change num value + conversion
if(index<13 )
num = Character.getNumericValue(isbnNumber.charAt(index));
}
System.out.println(isbnTotal);
if (isbnTotal % 10 == 0) System.out.println("Valid ISBN Number");
else System.out.println("Invalid ISBN Number");
}
}
}
import java.util.Scanner;
公共类ISBNChecker{
公共静态void main(字符串[]args){
字符串isbnNumber;
int isbnTotal=0;
int指数=0;
扫描仪scnr=新扫描仪(System.in);
System.out.println(“输入13位ISBN编号:”);
isbnNumber=scnr.nextLine();
如果(isbnNumber.length()!=13){
System.out.println(“错误-需要13位数字”);
}
//如果长度为13,则执行其他操作
否则{
//第一次初始化num+将索引处的字符转换为
数
int num=Character.getNumericValue(isbnNumber.charAt(index));
(指数)在你的问题中用一个答案来感谢别人,也许是一个赞成票。
import java.util.Scanner;
public class ISBNChecker{
public static void main(String [] args){
String isbnNumber;
int isbnTotal= 0;
int index = 0;
Scanner scnr = new Scanner(System.in);
System.out.println("Enter a 13 digit ISBN Number:");
isbnNumber = scnr.nextLine();
if (isbnNumber.length() != 13) {
System.out.println("Error- 13 numerical digits required");
}
//Perform other operations if it's length is 13
else{
//initiliizing num for 1st time + convert the character at index to
number
int num = Character.getNumericValue(isbnNumber.charAt(index));
while (index <13) {
if (index % 2 == 0) isbnTotal = isbnTotal + num;
else isbnTotal = isbnTotal + (3 * num);
//increment outside of if else - less code
index = index + 1;
//verify if index is not out of bounds for charAt()
//then change num value + conversion
if(index<13 )
num = Character.getNumericValue(isbnNumber.charAt(index));
}
System.out.println(isbnTotal);
if (isbnTotal % 10 == 0) System.out.println("Valid ISBN Number");
else System.out.println("Invalid ISBN Number");
}
}
}