首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串中解析整数并使用另一个选择语句的值

从字符串中解析整数并使用另一个选择语句的值
EN

Stack Overflow用户
提问于 2014-02-04 00:04:04
回答 1查看 226关注 0票数 0

我对编码和这个网站很陌生。对于这个程序,我接受4种不同的州际格式,但是当我输入州际公路405,I-405,I405时,这些值不会被放置在更多的信息选择语句中,而独占数字被接受和输出。对于输入的每种格式,我似乎找不到输出额外信息的错误。

输出示例:请输入美国州际公路名称。

405

405号州际公路

这是5号高速公路的环形公路。

请输入美国州际公路名称。

I-405

405号州际公路

请输入美国州际公路名称。

样本输出:2位数

请输入美国州际公路名称。

40

40号州际公路

这是一条长距离的干线公路。

它也是一条东西向的高速公路.

请输入美国州际公路名称。

I-40

40号州际公路

请输入美国州际公路名称。

因此,当我输入" 405“时,它宣布它是5号高速公路的一条环形公路,这与我说I-405、州际公路405或I405时如何不输出额外的信息不同。

代码语言:javascript
运行
复制
 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"));
    }
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 00:22:01

使用regex代替

代码语言:javascript
运行
复制
Pattern.compile("([0-9]+)");
Matcher m = p.matcher(interstate);
if( m.matches()) {
   routeNumber = Integer.parseInt(m.group(1));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21540423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档