Java 在一条语句中检测Android字符序列号(0-9),而不使用if-else

Java 在一条语句中检测Android字符序列号(0-9),而不使用if-else,java,android,charsequence,Java,Android,Charsequence,我是android新手,正在尝试做一个计算器 现在,我已经在charSequence变量中提取了整个表达式 e、 g 30+69-(3-10) 现在我需要检测charSequence变量的第一个字符是数字(0-9)还是字符/运算符 我可以使用get.subSequence(0,1),但不想将它与每个数字进行比较,以确定它是否是一个数字,如果它是一个数字,那么它是哪一个 如何使用较少的条件将其与每个数字进行比较,并提取该特定数字……您可以使用: Character.isDigit(someChar

我是android新手,正在尝试做一个计算器

现在,我已经在charSequence变量中提取了整个表达式

e、 g 30+69-(3-10)

现在我需要检测charSequence变量的第一个字符是数字(0-9)还是字符/运算符

我可以使用get.subSequence(0,1),但不想将它与每个数字进行比较,以确定它是否是一个数字,如果它是一个数字,那么它是哪一个

如何使用较少的条件将其与每个数字进行比较,并提取该特定数字……

您可以使用:

Character.isDigit(someChar)
这将告诉您字符是否是数字

如果不是,您可以假定它是一个运算符,并将其视为运算符

因此,实现可能如下所示:

CharSequence chars = "1+2-3";

for(int i = 0; i < chars.length(); i++ ) {
    if (Character.isDigit(chars.charAt(i))) {
        //is digit
    } else {
        //is operator
    }
}
CharSequence chars=“1+2-3”;
对于(int i=0;i
*我没有可用的java编译器,所以我现在不能保证它能正常工作

您可以使用:

Character.isDigit(someChar)
这将告诉您字符是否是数字

如果不是,您可以假定它是一个运算符,并将其视为运算符

因此,实现可能如下所示:

CharSequence chars = "1+2-3";

for(int i = 0; i < chars.length(); i++ ) {
    if (Character.isDigit(chars.charAt(i))) {
        //is digit
    } else {
        //is operator
    }
}
CharSequence chars=“1+2-3”;
对于(int i=0;i

*我没有可用的java编译器,所以我现在不能保证它能正常工作

这是一个真正的问题还是试图做过早的优化?呵呵。我在学习android。我已经在C++ B4上做了编程。没有优化。。只是试图理解基本原理是一个真正的问题还是试图进行过早的优化?呵呵。我在学习android。我已经在C++ B4上做了编程。没有优化。。只是试图理解basicsi m使用“charSequence”类型的变量而不是字符类型来存储表达式。。。。此函数在charSequence类中不可用…isDigit是Character类上的静态函数。您可以传递任何字符,例如从CharSequence.charAt(0)返回的字符。如果该数字是两位数字呢??在循环中运行它是否有效?即使它是两位数,您仍然知道它是一个数字。因此,如果您专注于消除运算符或非数字,那么您将只剩下可以在以后轻松评估的数字。这取决于您如何编写它。我正在使用“charSequence”类型的变量而不是字符类型来存储表达式。。。。此函数在charSequence类中不可用…isDigit是Character类上的静态函数。您可以传递任何字符,例如从CharSequence.charAt(0)返回的字符。如果该数字是两位数字呢??在循环中运行它是否有效?即使它是两位数,您仍然知道它是一个数字。因此,如果您专注于消除运算符或非数字,那么您将只剩下可以在以后轻松评估的数字。这取决于你怎么写。