将字符串转换为整数?

convert string to an integer?

我的控制台显示:

For input string: "zero"
For input string: "one"

我的跑步显示:

runs: 4/4 error:3 failures: 1

这是我的 4 个作业之一,我是 Java 的新手,我希望有人能帮助我解决这个问题。我不知道如何将单词转换为整数,我也不确定我的其余代码是否正确。

手册 if (...) else (...) 是唯一的方法(没有外部库)我认为,那是因为语言

在文本方面,您似乎只查找前 10 个数字。零,一,二等。你可以做这样的事情,虽然当涉及更多字符串格式的数字时这不是很可扩展,但对于你的例子来说应该没问题。

在 switch 语句中,您试图查看是否存在与数字匹配的有效文本。如果有,return 那个。您将达不到 try/catch.

否则继续 try/catch 部分并尝试将值格式化为数字。如果有效,return 它。否则捕获错误并 return 0;

如果文本值为“一些随机文本”,它会抛出错误。

public class App {
    public static void main(String[] args) {

        System.out.println(getNum("1"));
        System.out.println(getNum("two"));
    }

    private static int getNum(String num) {
        switch (num) {
            case "zero" : return 0;
            case "one" : return 1;
            case "two" : return 2;
            // carry on to add the case for the remaining 7 numbers
        }

        try {
            return Integer.parseInt(num);
        } catch (NumberFormatException e) {
            return 0;
        }
    }
}

您可以简单地将“零”到“九”按计数顺序存储在List<String>中,并return对应索引。如果列表中不存在字符串,则将 0 分配给 return 值。

首先,尝试使用 Integer#parseInt 将输入转换为 int,如果失败,则在列表中查找字符串。

演示:

import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Test
        String[] arr = { "five", "two", "abc", "nine", "123", "0", "-20", "xyz" };
        for (String s : arr) {
            System.out.println(s + " => " + convertStringToInt(s));
        }
    }

    static int convertStringToInt(String numberString) {
        List<String> list = List.of("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine");
        int retVal = 0, index = 0;
        try {
            retVal = Integer.parseInt(numberString);
        } catch (NumberFormatException e) {
            index = list.indexOf(numberString.toLowerCase());
            retVal = index == -1 ? 0 : index;
        }
        return retVal;
    }
}

输出:

five => 5
two => 2
abc => 0
nine => 9
123 => 123
0 => 0
-20 => -20
xyz => 0