我是编码和这个网站的新手。 对于此程序,我接受 4 种不同的州际格式,但是当我输入州际公路 405、I-405、I405 时,这些值不会放入更多信息选择语句中,而会接受并输出纯数字。 我似乎找不到为输入的每种格式输出额外信息的错误。
示例输出:
请输入美国州际公路名称。
405
405号州际公路
这是5号公路的环线公路。
请输入美国州际公路名称。
I-405
405号州际公路
请输入美国州际公路名称。
示例输出:2位
请输入美国州际公路名称。
40
40 号州际公路
这是一条长途干线公路。
也是一条东西走向的高速公路。
请输入美国州际公路名称。
I-40
40 号州际公路
请输入美国州际公路名称。
因此,当我输入“405”时,它会宣布它是 5 号高速公路的环形高速公路,这与当我说 I-405、405 州际公路或 I405 时不输出额外信息的方式不同
import java.util.*;
public class InterstateLoveSong {
public static void main(String args[]) {
String interstate;
int LENGTH_3_DIGIT_INTERSTATE = 3;
int INTERSTATE_STR = 11;
int MODULUS_2DIGIT = 5;
int DIVIDE_3DIGIT = 100;
int routeNumber;
boolean exit;
do {
System.out.println("Please enter a US interstate highway name.");
Scanner in = new Scanner(System.in);
interstate = in.nextLine();
{
//format 1
if (interstate.startsWith("Interstate")) {
routeNumber = Integer.parseInt(interstate.substring(INTERSTATE_STR));
System.out.println("Interstate " + routeNumber);
}
//format 2
else if (interstate.startsWith("I-")) {
routeNumber = Integer.parseInt(interstate.substring(2));
System.out.println("Interstate " + routeNumber);
}
//format 3
else if (interstate.startsWith("I")) {
routeNumber = Integer.parseInt(interstate.substring(1));
System.out.println("Interstate " + routeNumber);
}
else if (interstate.length() == LENGTH_3_DIGIT_INTERSTATE) {
routeNumber = Integer.parseInt(interstate.substring(0));
System.out.println("Interstate " + routeNumber);
}
else if (interstate.length() == 2) {
routeNumber = Integer.parseInt(interstate.substring(0));
System.out.println("Interstate " + routeNumber);
}
else if (interstate.length() == 1) {
routeNumber = Integer.parseInt(interstate.substring(0));
System.out.println("Interstate " + routeNumber);
}
else {
routeNumber = 0;
System.exit(0);
}
//more information for 2 digit highways
if (interstate.length() <= 2) {
if (routeNumber % MODULUS_2DIGIT == 0) {
System.out.println("This is a long distance arterial highway.");
}
if (routeNumber % 2 == 0) {
System.out.println("It is also an east-west oriented highway.");
}
else {
System.out.println("It is also north-south oriented highway.");
}
}
//more information for 3 digit highways
if (interstate.length() == LENGTH_3_DIGIT_INTERSTATE) {
if (routeNumber / DIVIDE_3DIGIT % 2 == 0) {
routeNumber = routeNumber % DIVIDE_3DIGIT;
System.out.println("This is a circumferential highway of highway "
+ routeNumber + ".");
}
else {
routeNumber = routeNumber % DIVIDE_3DIGIT;
System.out.println("This is a spur highway of highway "
+ routeNumber + ".");
}
}
}
}
while (!interstate.equals("exit"));
}
}
最佳答案
改用正则表达式
Pattern.compile("([0-9]+)");
Matcher m = p.matcher(interstate);
if( m.matches()) {
routeNumber = Integer.parseInt(m.group(1));
}
关于java - 从字符串中解析整数并将该值用于另一个选择语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21540423/