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

09-29 21:45