我是编码和这个网站的新手。
对于此程序,我接受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));
}