这是一个显示数组奇数和偶数字符的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");
}
这不会抛出错误但也不显示输出。至少它没有显示任何运行时错误。它在主线程中显示异常。
答案 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][];