java - 从字符串中解析整数并将该值用于另一个选择语句

标签 java

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

相关文章:

java - 使用 jaudiotagger 写入自定义(用户定义)MP4 字段

java - JFormattedTextField 问题

java - 如果连接器端口为 8081,如何从 apache tomcat 中的 URL 中删除端口号

java - Lucene Solr 使用复杂的过滤器

java - 无法解析符号 'IOUtils'

java - 整数列表 -> 长 switch/case - 更好的可读性

java - 我看不到圆圈在移动

java - 如何使用 SQLite ID 自动增量?

java - 无法确定使用 Java 缩放标准绘图窗口的算法

java - 字符串不能包含两个 '%'