for循环

时间:2016-01-16 19:45:18

标签: java arrays string algorithm

我正在研究字符串操作的问题。以下是我的代码片段。 我真的不确定为什么我的代码控制不会进入IF循环。

public class test{

public static void main(String args[]) {
    Scanner scan = new Scanner(System.in);
    int searchVariable = scan.nextInt();
    int numberOfValues = scan.nextInt();
    scan.nextLine();
    while (numberOfValues-- != 0) {
        String strg = scan.nextLine();
        String[] arrayInt = strg.split(" ");
        for (int i = 0; i < arrayInt.length; i++) {
            //   System.out.println("test 1===");
           // System.out.println("i value" + i);
           // System.out.println("i " + strg.charAt(i));
           // System.out.println(searchVariable);
            if (searchVariable==strg.charAt(i)) {
                System.out.println("===>");
                System.out.println("index " + i);
                return;
            }

        }
    }
}

}

输入

4

6

1 4 5 7 9 12

输出

输出应为4。 因为我正在编写此代码以在第三行输入中查找整数。

问题

程序控制不在循环if (searchVariable==strg.charAt(i))内 。请帮助!!

2 个答案:

答案 0 :(得分:1)

你的逻辑中存在问题:你真正想要的是

if (searchVariable==Integer.parseInt(arrayInt[i]))...

答案 1 :(得分:0)

当java比较不同的对象时,它会检查不同的方面,其中一个是它们的类型。

例如,char&#39; 1&#39;与整数1不同,因此&#39; 1&#39; == 1将返回false。

char c = '1';
System.out.println(c==1); //false

将char与整数比较时,您应该使用解析或方法 Character.getNumericValue(c)

System.out.println(Character.getNumericValue(c)==1); //true

另请注意,当java将char与整数进行比较时,它使用char的ascii值,因此,char&#39; a&#39;等于整数97和&#39; 1&#39;等于49的整数值:(等等......)

System.out.println(c==49); //true