有没有更好/更短的方式来写“如果字符串是一个数字”?

时间:2018-09-15 22:56:50

标签: java if-statement

有没有更好的方法来编写此代码,所以时间不长?

if(input.equals("1") || input.equals("2") || input.equals("3")
  || input.equals ("4") || input.equals("5") || input.equals("6")
  || input.equals("7") || input.equals("8") || input.equals("9")) {
    //some code 
}

4 个答案:

答案 0 :(得分:5)

由于要测试的数字范围是1到9,因此可以使用正则表达式。喜欢,

def nice_method_name_here(sr):
    return sr[sr > 0][0] == np.max(sr)

print(df.apply(nice_method_name_here))

答案 1 :(得分:2)

您没有在示例代码中包含“ 0”,但我想您希望将其包括在内。最可读和直接的方法是

     void FixedUpdate()
     {
         if (Input.touchCount > 0)
         {            
             RaycastHit2D hitInformation = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position),Camera.main.transform.forward);            
                 if (hitInformation.collider.gameObject.tag == "RocketPrefab")
                 {                    
                     Vector3 touchPosition = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
                     touchPosition.z = -4;
                     hitInformation.collider.gameObject.transform.position = touchPosition;
                     Debug.Log(touchPosition);
                 }                            
         }
     }

但是您也可以这样:

if (input.length == 1 && Character.isDigit(input[0]))
{ 
    //... 
}

答案 2 :(得分:1)

除了@Elliott Frisch的优雅回答外,以下内容也将达到目的:

A。

if(input.length() == 1 && Character.isDigit(input.charAt(0)) && input.charAt(0) != '0') {
    // ...
}

B。

if(input.length() == 1 && Character.isDigit(input.charAt(0)) && input.charAt(0) != 48) {
    // ...
}

C。

try {
    if (Integer.parseInt(input) > 0 && Integer.parseInt(input) < 10) {
        // ...
    }
} catch (NumberFormatException e) {
    // ...
}

答案 3 :(得分:-1)

使用input.matches("\\d")之类的正则表达式“ \ d”。

这是Java中的代码,它告诉您给定的数字是否为一位数字。

public static void main (String[] args)
{
    String input = "1";
    System.out.println(input.matches("\\d"));
}