为什么这是一个java程序来显示数组的奇数和偶数字符没有显示任何输出?

时间:2017-06-25 12:20:33

标签: java arrays multidimensional-array

这是一个显示数组奇数和偶数字符的java程序,它目前没有显示输出:

    Scanner scan = new Scanner(System.in);
    int n=scan.nextInt();// to get the num of words
    String[] inp=new String[10000];
    char[][] imArray=new char[10][];//2d array

    for(int j=0; j<n ; j++)//to get the strings
    {
      inp [j]= scan.nextLine();
      imArray[j] = inp[j].toCharArray();
    }

    for (int j=0; j<n ; j++)
    {
      for(int i=0;  i<inp[j].length() ;i=i+2)//even chars 
        System.out.println(imArray[i]);

      for (int k=0;  k<inp[j].length() ;k=k+2) //odd chars
        System.out.println("\t"+imArray[k]);

      System.out.println("\n");
    }

这不会抛出错误但也不显示输出。至少它没有显示任何运行时错误。它在主线程中显示异常。

3 个答案:

答案 0 :(得分:0)

我的问题不明确。 根据你对程序的评论,我认为你应该试试这个:

public static void main(String args[]){

    Scanner scan = new Scanner(System.in);

    int n=scan.nextInt();// to get the number of words
    String[] inp=new String[10000];


    for(int i=0;i<=n;i++){
        inp [i]= scan.nextLine();
    }
    System.out.println("Even Values");
    for(int j=0; j<=n ; j+=2){//even chars 

        System.out.print(inp[j]+" ");
    }
    System.out.println();
    System.out.println("Odd Values");
    for(int k=1;  k<=n ;k=k+2){

        System.out.print(inp[k]+" ");
    }

        }

}

答案 1 :(得分:0)

首先,让我们得到我们希望从用户那里获得的单词数量。我们允许的最大值为10,000字。

Scanner scan = new Scanner(System.in);
int wordsNumber = Math.min(Integer.parseInt(scan.nextLine()), 10000); // to get the num of words
String[] inp = new String[wordsNumber];
char[][] imArray=new char[wordsNumber][];//2d array

现在我们从用户那里得到单词并将它们保存到数组中。

for (int i = 0; i < wordsNumber ; i++) { //to get the strings
  inp[i] = scan.nextLine();
  imArray[i] = inp[i].toCharArray();
}

最后,迭代数组并为每个单词在偶数位置打印其字符,然后在奇数位置打印字符。 在每个单词后面打印换行符。

for (int i = 0; i < wordsNumber ; i++) {
  int wordLength = imArray[i].length;

  for(int j = 0;  j < wordLength; j+=2) { //even chars
    System.out.print(imArray[i][j]);
  }

  System.out.print("\t");

  for (int k = 1;  k < wordLength; k+=2) { //odd chars
    System.out.print(imArray[i][k]);
  }

  System.out.println("\n");
}

实际上,不需要使用2D数组,我留下来与问题中的代码保持相似性。 最好迭代 inp 数组并使用 String.charAt(int)

答案 2 :(得分:0)

首先,您要创建一个大小为10

的数组
char[][] imArray=new char[10][];//2d array

然后你通过

分配它
for(int j=0; j<n ; j++)//to get the strings
{
  inp [j]= scan.nextLine();
  imArray[j] = inp[j].toCharArray();
}

如果n的值大于10,,则会抛出ArrayIndexOutOfBoundsException

imArray[j] = inp[j].toCharArray(); // <--- Here ArrayIndexOutOfBoundsException

一旦发生异常,您的程序就会终止,因此不会产生任何输出。

要解决此问题,请声明imArray大小为n而不是10

char[][] imArray = new char[n][];