2 回答
TA贡献1829条经验 获得超13个赞
public static int lastDigitsSum(int total) {
try (Scanner scan = new Scanner(System.in)) {
String str = scan.next();
int count = 0;
for (int i = str.length() - 1, j = 0; i >= 0 && j < total; i--, j++) {
if (Character.isDigit(str.charAt(i)))
count += str.charAt(i) - '0';
else
throw new RuntimeException("Input is not a number: " + str);
}
return count;
}
}
TA贡献1842条经验 获得超21个赞
首先,您必须识别输入的值是否为数字并且至少包含 7 位数字。除非您必须输出错误消息。将输入的值转换为字符串并使用类 Character.isDigit(); 检查字符是否为数字。然后,您可以使用 String 类中的一些方法,例如 substring(..)。最后使用错误/有效值进行单元测试,以查看您的代码是否健壮。完成后使用 finally { br.close() } 关闭 BufferedReader 和 Resources。将您的代码推送到方法中并使用实例类 erste-Aufgabe(第一个练习)。当您真正完成时,将 JFrame 用于 GUI 应用程序。
private static final int SUM_LAST_DIGITS = 7;
public void minimalSolution() {
String enteredValue = "";
showInfoMessage("Please enter your number with at least " + SUM_LAST_DIGITS + " digits!");
try (Scanner scan = new Scanner(System.in)) {
enteredValue = scan.next();
if (enteredValue.matches("^[0-9]{" + SUM_LAST_DIGITS + ",}$")) {
showInfoMessage(enteredValue, lastDigitsSum(enteredValue));
} else {
showErrorMessage(enteredValue);
}
} catch(Exception e) {
showErrorMessage(e.toString());
}
}
public int lastDigitsSum(String value) {
int count = 0;
for (int i = value.length() - 1, j = 0; i >= 0 && j < SUM_LAST_DIGITS; i--, j++)
count += value.charAt(i) - '0';
return count;
}
public void showInfoMessage(String parMessage) {
System.out.println(parMessage);
}
public void showInfoMessage(String parValue, int parSum) {
System.out.println("Your entered value: [" + parValue + "]");
System.out.println("The summed value of the last 7 digits are: [" + parSum + "]");
}
public void showErrorMessage(String parValue) {
System.err.println("Your entered value: [" + parValue + "] is not a valid number!");
}
添加回答
举报