请问我的代码有什么问题,运行不了

import java.util.*;
public final class beautiful {
  
 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  Scanner sc=new Scanner(System.in);
     String W=sc.nextLine();
     //把字母存入字符串数组
     String[] W_Arrays=new String[W.length()];
     for(int i=0;i<W.length();i++) {
      W_Arrays[i]=W.substring(i, i+1);
     }
     //利用数组删除相同元素,减少for循环的运行时间
     List<String> list=new ArrayList<String>();
     list.addAll(Arrays.asList(W_Arrays));
     //k用于判断元素是否出现偶数次
     int k=1,n=0;
     boolean flag=true;
     while(true) {
      for(int j=1;j<list.size();j++) {
       if(list.get(n).equals(list.get(j))){
        k++;
        list.remove(list.get(j));
       }
      }
      //第二层循环完毕,判断k是否为偶数
      if(k%2!=0) {
       System.out.println("NO");
       flag=false;//不为0则退出第一层循环,输出结果
      }else {
       list.remove(list.get(n));//如果为偶数则删除最开始的元素
       k=0;
      }
     }
     if(list.size()==0) {
      System.out.println("YES");
     }
    
 }
}

 报错如下:

Exception in thread "main" java.lang.Error: 无法解析的编译问题:

 at com.ACM.beautiful.main(beautiful.java:6)


 
 
 
 
 
 
 
 
 
 
 
 
 
 

幕布斯9176636
浏览 721回答 1
1回答

imooc_幕课网

错误的位置:for(int i=0;i<W.length();i++) {     W_Arrays[i] = W.substring(i, i+1); }当 i = W.length()-1时 ; W.substring(i,i+1);就会造成下标越界。for(int i=0;i<W.length();i++) {     if( i< W.length()-1 )         W_Arrays[i] = W.substring(i, i+1);     else        W_Arrays[i] = W.substring(i);    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java