本文介绍了找到阵列中使用Java的子指数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想返回用户输入使用Java的字符数组字符串的索引。数组初始化,炒,然后搜索。我是新来的这一点,并试图用没有成功两种不同的方法。我是什么俯瞰?先谢谢了。

方法1:

 进口java.lang.Math中;
进口java.util.Scanner中;
进口java.util.Arrays中;
进口的java.util.List;
进口java.util.Collections中;公共类ArrayRandomChar {
公共静态无效的主要(字串[] args){
    //创建一个字符数组:
    字符[] anArray = {'P','A','P','A','B','E','A','R'};
    对于(CHAR CH:anArray)
    System.out.print(CH +);
    的System.out.println();    //创建从阵列和洗牌名单
    清单<性格> ALIST = Arrays.asList(anArray);
    Collections.shuffle(ALIST);
    System.out.print(ALIST);
    的System.out.println();    //带回到数组
    对象ob [] = aList.toArray();
    对于(CH对象:anArray)
    System.out.print((字符)CH +);    //用户输入
    扫描仪输入=新的扫描仪(System.in);
    串字母= input.next();
    的System.out.println(函);    //返回字母索引,-1,如果不包含
    INT RETVAL = aList.IndexOf(函);
    的System.out.println(RETVAL);    }
      }

问题:运行文件并输入一个字母时, 1 返回即使列表包含字母

方法二:

 公共类ArrayRandomChar {
公共静态无效的主要(字串[] args){    //创建一个字符数组:
    字符[] anArray = {'P','A','P','A','B','E','A','R'};
    对于(CHAR CH:anArray)
        System.out.print(CH +);
    的System.out.println();    //创建从数组列表:
    清单<性格> ALIST = Arrays.asList(anArray);
    Collections.shuffle(ALIST);
    System.out.print(ALIST);
    的System.out.println();    //创建数组列表
    对象ob [] = aList.toArray();
    对于(CH对象:anArray)
        System.out.print((字符)CH +);    //用户输入
    扫描仪输入=新的扫描仪(System.in);
    串字母= input.next();
    INT指数= Arrays.binarySearch(anArray,字母);
    的System.out.println(〜指数);
    的System.out.println(函);    }
      }

这引发异常:

  java.lang.ClassCastException:java.lang.String中不能被强制转换为java.lang.Character中
在java.lang.Character.compareTo(Character.java:101)
在java.util.Arrays.binarySearch0(Arrays.java:2001)
在java.util.Arrays.binarySearch(Arrays.java:1943)
在ArrayRandomChar.main(ArrayRandomChar.java:32)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在java.lang.reflect.Method.invoke(Method.java:597)
在edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)


解决方案

这将解决这一问题。

方法1:

  INT RETVAL = aList.indexOf(letter.charAt(0));

方法二:

  INT指数= Arrays.binarySearch(anArray,letter.charAt(0));

问题是,你有一个字符数组 ALIST 是一个字符串,因此它搜索字符串字符数组中为止。它可以有可能导致 ClassCastException异常或字符串没有找到。

这篇关于找到阵列中使用Java的子指数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 08:43