将字符串转换为整数?
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
我的控制台显示:
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