Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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_String_Java.util.scanner - Fatal编程技术网

Java 打印不带[]的错误消息

Java 打印不带[]的错误消息,java,arrays,string,java.util.scanner,Java,Arrays,String,Java.util.scanner,好的,这更像是有一种简单的方法来输出 [6, 8, 9, 10] [1002] empty array [] Bad input Bad input Bad input Bad input 如果是这样,怎么办 这更像是对一些不敬的事情吹毛求疵,在我开始做一些需要花很多时间才能让输出更好的事情之前 所以我只想知道这是否可以用一种简单的方法来实现,如果是这样的话,如何实现 public class String2intArray { public static void main(Strin

好的,这更像是有一种简单的方法来输出

[6, 8, 9, 10]
[1002]
empty array []
Bad input
Bad input
Bad input
Bad input
如果是这样,怎么办

这更像是对一些不敬的事情吹毛求疵,在我开始做一些需要花很多时间才能让输出更好的事情之前

所以我只想知道这是否可以用一种简单的方法来实现,如果是这样的话,如何实现

public class String2intArray {

  public static void main(String[] args) {
    System.out.println(Arrays.toString(str2ia("6,8 ,9 , 10")));
    System.out.println(Arrays.toString(str2ia("1002")));
    System.out.println(Arrays.toString(str2ia("")));
    System.out.println(Arrays.toString(str2ia(", 2")));
    System.out.println(Arrays.toString(str2ia("Ett,Två")));
    System.out.println(Arrays.toString((str2ia("1,,2"))));
    System.out.println(Arrays.toString(str2ia("1 , 2 ,")));
  }

  public static int[] str2ia(String s) {
    int arraylengt = 0;
    int arrayindex = 0;
    s = s.replaceAll("\\s", "");
    Scanner scan = new Scanner(s).useDelimiter(",");
    if(s.length() == 0) {
        int[] emptyArray = {};
        System.out.print("empty array ");
        return emptyArray;
    }
    try {
      if(!s.matches("(\\d+,)*\\d+")){
        throw new IllegalArgumentException("Bad input");            
      }
    } catch (IllegalArgumentException e) {
        System.out.print("Bad input");
        int[] emptyArray = {};
        return emptyArray;
    }
    while (scan.hasNext()) {
        if (scan.hasNextInt()) {
            int nextInt = scan.nextInt();

            arraylengt ++;
        } else {
            // discard next token
            scan.next();
        }
      }

      int[] intArray = new int[arraylengt];

      Scanner scan2 = new Scanner(s).useDelimiter(",");
      try {
        while (scan2.hasNext()) {
            if (scan2.hasNextInt()) {
                intArray[arrayindex] = scan2.nextInt();
                arrayindex++;

            } else {
                // discard next token
                throw new IllegalArgumentException("Bad input");
            }        
          }
        } catch (IllegalArgumentException e) {
            System.out.print("Bad input");
            int[] emptyArray = {};
            return emptyArray;

        }           
    return intArray;            
  }
}

创建自己的代码以迭代数组:

int[] aArray = str2ia("6,8 ,9 , 10");
for (int number : aArray) {
  System.out.print(number);
}
System.out.println();

以下是一种通过对现有代码进行2次更改来实现所需输出的方法:

第一:替换以下代码:

System.out.println(Arrays.toString(str2ia("6,8 ,9 , 10")));
System.out.println(Arrays.toString(str2ia("1002")));
System.out.println(Arrays.toString(str2ia("")));
System.out.println(Arrays.toString(str2ia(", 2")));
System.out.println(Arrays.toString(str2ia("Ett,Två")));
System.out.println(Arrays.toString((str2ia("1,,2"))));
System.out.println(Arrays.toString(str2ia("1 , 2 ,")));
...
} catch (IllegalArgumentException e) {
    System.out.print("Bad input");
    int[] emptyArray = {};
    return emptyArray;
}
-与-

-及-

第二:替换以下代码:

System.out.println(Arrays.toString(str2ia("6,8 ,9 , 10")));
System.out.println(Arrays.toString(str2ia("1002")));
System.out.println(Arrays.toString(str2ia("")));
System.out.println(Arrays.toString(str2ia(", 2")));
System.out.println(Arrays.toString(str2ia("Ett,Två")));
System.out.println(Arrays.toString((str2ia("1,,2"))));
System.out.println(Arrays.toString(str2ia("1 , 2 ,")));
...
} catch (IllegalArgumentException e) {
    System.out.print("Bad input");
    int[] emptyArray = {};
    return emptyArray;
}
-与-


如果要控制输出,则不会使用Arrays.toString。编写您自己的格式。您可以通过多种方式来完成:例如,您可以创建一个打印方法,根据需要清除数组,或者您可以创建一个类来扩展数组并覆盖toString定义您自己的格式。最简单的方法是IntStream.ofarray.mapToObjInteger::toString.collectCollectors.joining。该代码将所有值混合在一起。例如,如果数组包含10、2、35和617,它将写入10235617。可能不是OP想要的。@FredK嗯,有点像,我只是想知道是否有一种简单的方法可以做到,从我收到的评论中,我决定花上几个小时,是的,我编程很差,只是为了能改变输出的一件事。这只不过是一条错误消息,以防输入出错。