Java从字符串输入中获取int

时间:2013-03-01 04:14:58

标签: java string

我正在写一个二叉搜索树。用户将按如下方式使用该程序:

您想测试哪一棵树(BST,ST,RBT)?

  

BST   您要插入多少项?   10000   模式(随机或排序)?   分类   下一个命令(插入X,删除X,找到X,高度,退出)?   找到111111   物品不存在。

对于前三个选项,我认为我可以使用字符串在BST,ST和RBT之间进行选择,以及在随机或排序之间进行选择,如

String choice
if( choice == "random")
  insert random numbers
我遇到麻烦的是第四选择。例如,如果用户输入插入100作为字符串,我只需要关闭100并使其成为int。如果是这样,我将如何做到这一点?

3 个答案:

答案 0 :(得分:4)

您可以使用这些函数的组合来确定字符串是否为int

public boolean isInteger(String str) {
  try {
    Integer.parseInt(str);
    return true;
  } catch(NumberFormatException e) {
    return false;
  }
}

如果此函数返回true ... string是一个整数...现在使用

获取整数值
Integer.parseInt(str);

答案 1 :(得分:1)

我要注意的第一件事是不应该将String与==进行比较,而应该使用string.equals(comparisonString);您还可以使用以下代码解析一个人输入的所有输入,然后同时使用输入的字符串和输入的字符串值,它将不依赖于字符串的开头。这将满足他们所有人的选择;插入,删除,等等。

String userInput;//received by system in
String choice;
int choiceInt;
for (int i = 0; i < userInput.length(); i++) 
{
    Character character = userInput.charAt(i);
    if (!Character.isDigit(character)) 
    {
        choice += character;
    }
    else if (Character.isDigit(character))
    {
        choiceInt += character;
    }
    else
    {
        System.out.println("Unable to determine character.");
    }

    /* Code for the comparison of String based option */
    //Example
    if (choice.equalsIgnoreCase("insert")//NOTE: the ignore case, 
                                         // you want users to be                        
                                         // able to enter in strings 
                                         // and not have a case sensitivity.
    {
        /* do the code you planned on doing here */
    }
}

您还可以为愿意接受的每个字符串可能性分配整数值作为有效选项。这会增加编码,但也会增加切换案例声明。 (这仍然被解释为,否则,如果,else语句)我认为在那一点上它将更多地取决于开发者的意图和设计偏好。如果我错了,请纠正我。

您也可以使用try和catch块替换最终的else语句。

答案 2 :(得分:0)

试试这个:

if (input.startsWith("insert")) {
    int num = Integer.parseInt(input.replaceAll("\\D", ""));

}