【发布时间】:2019-03-31 10:16:19
【问题描述】:
我正在尝试将 Scanner 下一个字符串转换为 Int 并检查输入的文本是否为数字,如果不是数字系统打印这不是数字但如果是数字则将其转换为 int 并除以十。
如果我不检查代码中的条件,则代码正在按预期运行。但是如果输入了文本,它正在计算字符索引值。
如果有条件,则在计算之前对每个数字进行计算,而不是对数字求和,但不计算其他字符索引值。
不检查条件:
Scanner inputtext = new Scanner(System.in);
System.out.print("Mata in ett tal: ");
String number = inputtext.next(); //Här matar användaren in text.
int sum = 0;
double number2 = 10.0;
for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
sum *= 10;
sum += (int) number.charAt(i)-(int)'0';
}
System.out.println("Resultat: " + sum); //Här matas talet ut.
System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.
}
}
检查时:
Scanner inputtext = new Scanner(System.in);
System.out.print("Mata in ett tal: ");
String number = inputtext.next(); //Här matar användaren in text.
int sum = 0;
double number2 = 10.0;
for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
char ch = number.charAt(i);
if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' || ch == '5' || ch == '6'|| ch == '7'|| ch == '8'|| ch == '9'){
sum *= 10;
sum += (int) number.charAt(i)-(int)'0';
} else {
System.out.println("Detta är inte ett tal");
break;
}
System.out.println("Resultat: " + sum); //Här matas talet ut.
System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.
}
}
}
我希望如果输入包含数字的字符串,则执行计算,如果添加其他字符,则告诉用户这不是数字
【问题讨论】:
-
不清楚是什么问题。它做了什么不该做的事?您能否将“错误”输出复制粘贴到您的问题中并解释您认为它错误的原因?
-
如果我在字符串中输入一个数字,它应该被转换为它的 int 数字,然后除以 10 并打印出数字并打印出除以 10 的数字。但是如果我输入一些东西否则在字符串中应该说这不是一个数字。现在,如果我输入 123 而不是打印 123 和 12.3,它会打印出 1、0.1、12、1.2 和 123 和 12.3。它正在为每个循环进行计算,而不是打印出 123 和 12.3。
-
那是因为您的打印在 for 循环内 - 您忘记关闭大括号。最好使用 IDE 的“格式”按钮来获得正确的缩进 - 然后你会立即看到这一点。我将把它作为一个错字关闭。
标签: java string for-loop char int