Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取字符在字符串中出现的次数时出错_Java_Arrays - Fatal编程技术网

Java 读取字符在字符串中出现的次数时出错

Java 读取字符在字符串中出现的次数时出错,java,arrays,Java,Arrays,我正在经历一段非常令人沮丧的时间,试图从我的一个程序中去掉这个bug。基本上,我的程序接收字符串,读取字符串中每个键盘字符出现的次数,然后显示它 我正在运行的主循环进行字符读取,即使满足条件,也不会运行 你知道可能出了什么问题吗 import java.util.Scanner; public class mainClass { public static void main (String[] args){ Scanner myScanner = new Scanner(Sys

我正在经历一段非常令人沮丧的时间,试图从我的一个程序中去掉这个bug。基本上,我的程序接收字符串,读取字符串中每个键盘字符出现的次数,然后显示它

我正在运行的主循环进行字符读取,即使满足条件,也不会运行

你知道可能出了什么问题吗

 import java.util.Scanner;

public class mainClass {

public static void main (String[] args){

    Scanner myScanner = new Scanner(System.in);   
    System.out.println("Please enter array");  
    String inputString = myScanner.nextLine();    //input array entered
    myScanner.close();

            char[] charTypes = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9,`,~,!,@,#,$,%,^,&,*,(,),-,_,=,+,[,{,],},;,:};

    char[] charArray = new char[inputString.length()];


    for (int i =0; i<=inputString.length()-1;i++){   //conversion of string to character array

        charArray[i]= inputString.charAt(i);
        System.out.print(" "+ charArray[i] +" ");

    }


    int i1=0;
    int i2=0;
    int charCounter[] = new int[84];  //This array holds the amount of times each corresponding character occurs in a string

while (i1<=charArray.length-1){

    if(charArray[i1]==charTypes[i2] && i22<83 && i1<charArray.length-1){

        charCounter[i22]++;
        i1++;
        i22=0;

    }else if(charArray[i1] != charTypes[i2] && i22<83 && i1<charArray.length-1){

        i22++;

    }else{System.out.println("Not even running through the if's");//introduced as as tests to see if the conditions of the two if statements were being met}
}

for(int i = 0; i<=91;i++){ // prints out how many times each character occurs

    System.out.println(charTypes[i]+" : "+ charCounter[i]);

    }
}
}
import java.util.Scanner;
公共类主类{
公共静态void main(字符串[]args){
Scanner myScanner=新扫描仪(System.in);
System.out.println(“请输入数组”);
String inputString=myScanner.nextLine();//输入数组
myScanner.close();
字符[]图表类型={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,p,q,r,r,s,t,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,x,y,y,z,0,1,2,3,4,5,5,6,7,8,9,`;
char[]charArray=新字符[inputString.length()];

对于(int i=0;i来说,一个问题是,就像在创建字符串时必须在字符串周围放“”一样,必须在字符周围放“”才能让系统知道它是什么

char[] charTypes = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F',
'G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z','0','1','2','3','4','5','6','7','8','9','`','~','!','@','#','$',
'%','^','&','*','(',')','-','_','=','+','[','{',']','}',';',':'};
上面的代码中似乎有一个输入错误,您在几个地方将i2称为i22

另一个问题是循环条件的设置方式。目前:

if(charArray[i1]==charTypes[i2] && i2<83 && i1<charArray.length-1){

if(charArray[i1]==charTypes[i2]&&i2您可以使用字典/哈希映射。字典不仅可以用来计算字母,还可以用来计算单词和数据中出现的其他内容。
String inputString=myScanner.nextLine()

Map list=newhashmap();
for(字符元素:inputString){
if(list.containsKey(c))//如果存在字符
{
list.put(元素,list.get(元素)+1);//增加值1
}
否则{
list.put(元素,1);//添加值为1的字符
}        
}
这将为您提供字符串tex中所有字符计数的列表。 然后你可以像这样打印它们

for (Map.Entry<char, Integer> entry : list.entrySet()) {
    char key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key+ " occurs " + value + " times");
}
for(Map.Entry:list.entrySet()){
char key=entry.getKey();
整数值=entry.getValue();
System.out.println(键+“发生”+值+“次数”);
}

查看
String#tocharray()
。然后学习如何使用调试器。在这里,您可以执行类似“I可能的重复项”这样的检查,请参见我的问题:
Map<char, Integer> list = new HashMap<char, Integer>();

for(char element: inputString){
    if(list.containsKey(c))//if char exist
    {
        list.put(element,list.get(element)+1);//increase value by 1
    }
    else{
        list.put(element,1);//add char with value 1
    }        
}
for (Map.Entry<char, Integer> entry : list.entrySet()) {
    char key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key+ " occurs " + value + " times");
}