执行这段代码报java.lang.NegetiveArraySizeException 求解答

package demo_1119;

import java.io.InputStream;

public class demo02 {
public static void main(String[] args) throws Exception{
//输入:9876673 //输出:37689
InputStream in=System.in();
int avaable=in.available()-1;
char[] chars=new char[avaiablene];
while(avaliable-->0) {
chars[avaiable]=(char) in.read();
}
StringBuilder result=new StringBuilder();
for(int i=0;i<chars.length;i++) {
if(result.lastIndexOf(String.valueOf(chars[i])!=-1)) {
continue;
}
resual.append(chars[i]);
}

System.out.println(reusl.toString());

}
}

你贴出来的代码有问题,已经修复并且已经优化

public static void main(String[] args) throws Exception {
        //输入:9876673 //输出:37689
        Scanner scanner = new Scanner(System.in);
        char[] chars = new StringBuilder(scanner.nextLine()).reverse().toString().toCharArray();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            if (result.lastIndexOf(String.valueOf(chars[i])) != -1) {
                continue;
            }
            result.append(chars[i]);
        }

        System.out.println(result);
    }

运行结果如下:

Connected to the target VM, address: '127.0.0.1:64183', transport: 'socket'
9876673
37689
Disconnected from the target VM, address: '127.0.0.1:64183', transport: 'socket'

Process finished with exit code 0

如有帮助,请采纳,十分感谢!

你这代码是完整的?
char[] chars=new char[avaiablene]; avaiablene哪里来的

输入的默认是字符串,
没有转数字,需要加个转数字的:

InputStream in=System.in();
int avaable=Integer.parseInt(in.available())-1;
char[] chars=new char[avaiablene];

in.available() 的读取,可能会回0

下标为负数所以出错了,
在代码int avaable=in.available()-1;下添加如下逻辑

if(avaable < 0){
    avaable = 0;
}

原因及解释:available方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。
比如,Socket通讯时,对方明明发来了1000个字节,但是自己的程序调用available()方法却只得到900,或者100,甚至是0,感觉有点莫名其妙,怎么也找不到原因。
其实,这是因为网络通讯往往是间断性的,一串字节往往分几批进行发送。本地程序调用available()方法有时得到0,
这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对方发送了1000个字节给你,也许分成3批到达,这你就要调用3次available()方法才能将数据总数全部得到。
所以,使用available方法时处理输入流时,需要对count进行判断,然后在处理文件流。可以参考如下链接:https://www.cnblogs.com/sinceForever/p/8454381.html