java - 如何从字符串中获取整数?

标签 java

我对 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/

相关文章:

java - 使用 REST 如何将值绑定(bind)为参数

java - 整数类型的 double /浮点比较(关系运算符)的精度是多少?

java - 只匹配给定集合中的一个字符出现一次

java - 如何使用/src/main/resources 中的嵌套文件夹中的属性文件?

java - java扫描仪读取文件的奇怪行为

java - 为什么在java中左移改变符号值

java - 通过循环创建文本字段

java - JSplitPane 小边框但大抓取命中框

java - 如何使用构造函数中实例化的 super (变量)?

java - 如何最有效地共享 log4j 库