从char转换为int

时间:2014-11-26 23:48:43

标签: java char int

我正在尝试对包含整数的字符串应用二进制搜索。这是我的代码

public class abcd {
public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    String num="";
    for(int i=0;i<5;i++){
        num += input.next();
    }
    if(bs(5,num))
        System.out.println("Yep");
    else
        System.out.println("Nope");
}
public static boolean bs(int key,String N){
    int low=0,high=N.length()-1,mid;
    while(high>=low){
        mid = (high+low)/2;
        if(N.charAt(mid) == key)
            return true;
        else if(N.charAt(mid) < key)
            low = mid+1;
        else
            high = low-1;
    }
    return false;
}
}

bs是二进制搜索方法。我的输入已经排序。现在我希望找到5是否输入但是即使包含5作为输入,我总是得到“Nope”作为输出,这意味着bs总是返回false。

我理解charAt返回一个char,所以这就是问题所在。但是如果我希望将该char转换为int,我该怎么办? 例如,如何将“4”转换为4?

3 个答案:

答案 0 :(得分:2)

首先使用Character.forDigit()

将您的密钥转换为字符
public static boolean bs(int intkey,String N){
    char key = Character.forDigit(intkey,10);

    int low=0,high=N.length()-1,mid;
    //...
    //the rest of your function should stay the same
    //...
}

答案 1 :(得分:1)

你可以做到

int intValue = N.charAt(mid) - 0x30;

或者

int intValue = Integer.parseInt(String.valueOf(N.charAt(mid)));

答案 2 :(得分:1)

是的,你试图将字符与不能正常工作的字符进行比较。如何只使用字符?

public static boolean bs(char key,String N){

并致电

bs('5', '25789');