我对 Java 相当陌生,并且我的 Java 类中一直遇到一个问题。
设计并编写一个搜索个位数的小程序 并将其更改为相应的单词。例如, 字符串“4 分和 7 年前”将转换为“4 分和 7 年前” 几年前”。或者如果输入是“一场棒球比赛有 27 个出局”,它会变成 “棒球比赛有二七出局”。
我已经创建了小程序并且它运行了。我还这样做了,如果在输入中输入一个数字(0 到 99 之间),它会将其转换为文本(如 4 到 4),但我无法让它检测字符串中的数字,如上面的数字.
我将如何使其能够读取字符串并实际检测其中的整数?
这是我在没有 GUI 组件的情况下所拥有的:
private static final String[] numberNames = { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
private static String convertNumber(int number) {
String num;
if (number % 10 < 10){
num = numberNames[number % 10];
number /= 10;
}
else {
num = numberNames[number % 10];
number /= 10;
}
if (number == 0) return num;
return numberNames[number] + "-" + num;
}
最佳答案
您不想使用static Final String
数组来实现这样的目的。它会起作用,但是你越早习惯使用枚举,你就会成为一个更好的程序员。
NumberEnum.java
public enum NumberEnum {
ZERO ("zero"),
ONE ("one"),
TWO ("two"),
THREE ("three"),
FOUR ("four"),
FIVE ("five"),
SIX ("six"),
SEVEN ("seven"),
EIGHT ("eight"),
NINE ("nine"),
TEN ("ten");
private String text;
private static final NumberEnum[] elements = NumberEnum.class.getEnumConstants();
private NumberEnum(String text) {
this.text = text;
}
public String getText() {
return text;
}
public static NumberEnum getFromDigit(int index) {
if (index < 0 || index > 9) return null;
return elements[index];
}
}
DigitReplace.java
public class DigitReplace {
public static void main(String... args) {
System.out.println(convertString("4 score and 7 years ago"));
System.out.println(convertString("3 days ago I ate 173 cheeseburgers"));
}
public static String convertString(String input) {
StringBuilder output = new StringBuilder(input.length() * 2);
boolean foundOne = false;
// for every character
for(char c : input.toCharArray()) {
// if it's a digit
if (Character.isDigit(c)) {
// if this is not the first digit, put a dash
if (foundOne) {
output.append('-');
}
NumberEnum thisWord = NumberEnum.getFromDigit(c - '0');
output.append(thisWord.getText()); //
foundOne = true;
} else {
// just add the character
foundOne = false;
output.append(c);
}
}
return output.toString();
}
}
输出
four score and seven years ago
three days ago I ate one-seven-three cheeseburgers
关于java - 如何从字符串中获取整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16266503/