我正在写一个二叉搜索树。用户将按如下方式使用该程序:
您想测试哪一棵树(BST,ST,RBT)?
BST 您要插入多少项? 10000 模式(随机或排序)? 分类 下一个命令(插入X,删除X,找到X,高度,退出)? 找到111111 物品不存在。
对于前三个选项,我认为我可以使用字符串在BST,ST和RBT之间进行选择,以及在随机或排序之间进行选择,如
String choice
if( choice == "random")
insert random numbers
我遇到麻烦的是第四选择。例如,如果用户输入插入100作为字符串,我只需要关闭100并使其成为int。如果是这样,我将如何做到这一点?
答案 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", ""));
}