我正在研究字符串操作的问题。以下是我的代码片段。
我真的不确定为什么我的代码控制不会进入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))
内
。请帮助!!
答案 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