代码的作用是在[n,m]中找出包含38或4的数的个数  我想问为什么我用indexof时 发现 即使我输入4时 也显示查找不到呢
import java.util.*;public class Main {public static void main(String[] args) {
Scanner zx = new Scanner(System.in);
while (zx.hasNext()) {
int n = zx.nextInt();
int m = zx.nextInt();
if(n == 0 && m == 0 ) break;
int j = 0;
for (int i = n; i <= m; i++) {
String a = Integer.toString(i);
if (a.indexOf(38) != -1 || a.indexOf(4) != -1) {
j++;
}
}
System.out.println(j);
}
}
}

解决方案 »

  1.   

    你 indexOf 里的参数和 ASCII 表是对应的
      

  2.   

    if (a.indexOf(38) != -1 || a.indexOf(4) != -1)   ->  if (a.indexOf(”38“) != -1 || a.indexOf("4") != -1)
      

  3.   

    建议点进去看indexOf源码
      

  4.   

    a.indexOf(“38”) != -1 || a.indexOf(“4”) != -1
    这才能查找字符串。
      

  5.   

    a.indexOf("38") != -1 || a.indexOf("4") != -1
      

  6.   

    是字符38和4,又不是整型的38和4,整型的38和4会进行转码变成一个单字符而已,你可以根据ASCII 表找到整型38和4对应的单字符是什么,但不是你想要查找的字符串“38”和字符串“4”。
      

  7.   

    Java中字符串中子串的查找共有四种方法,如下:
    1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 
    2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 
    3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 
    4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
      

  8.   

    indexof是String的方法,你可以把int转成string,再indexof
      

  9.   

    你写的indexOf里面是整数,对应的是ascii,应该写字符串
    a.indexOf("38") != -1 || a.indexOf("4") != -1