2017-10-06 77 views
-1

所以我正在解决一个问题,需要一些字符串的转换,但我甚至不能读取字符串数(整数)。下面的代码:无法读取数字

import java.util.Scanner; 
    import java.util.ArrayList; 

    public class Main { 
    public static void main(String[] args) { 
Scanner scan = new Scanner(System.in); 
ArrayList<String> board = new ArrayList<String>(); 
int num = scan.nextInt(); 
int num1 = 0; 
String num2 = ""; 
String word = ""; 
String word1 = ""; 
for (int i=0; i<=num; i++) { 
    word = scan.nextLine(); 
    if (word.length() >10) { 
    num1 = word.length()-2; 
    num2 = Integer.toString(num1); 
    word1 = word.charAt(0) + num2 + word.charAt(word.length()-1); 
    board.add(word1); 
    } else { 
    board.add(word); 
    } 
    for (i=0; i<=num; i++) { 
    System.out.println(board.get(i)); 
    } 
} 
    } 
    } 

我遇到的错误是异常线程“main” java.lang.IndexOutOfBoundsException:指标:1,尺寸:1

+2

无论哪条线引发错误,您试图读取只有一个元素的数组中的第二个元素。 – David

+0

在您的问题中隔离发生此问题的行。 –

+0

'for(i = 0; i <= board.size(); i ++)' – dehasi

回答

0

是你的意图也做这样的事?否则,为什么你有内循环重用相同的变量我?

import java.util.Scanner; 
import java.util.ArrayList; 

public class Main { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     ArrayList<String> board = new ArrayList<String>(); 
     int num = scan.nextInt(); 
     scan.nextLine(); 
     int num1 = 0; 
     String num2 = ""; 
     String word = ""; 
     String word1 = ""; 
     for (int i = 0; i <= num; i++) { 
      word = scan.nextLine(); 
      if (word.length() > 10) { 
       num1 = word.length() - 2; 
       num2 = Integer.toString(num1); 
       word1 = word.charAt(0) + num2 + word.charAt(word.length() - 1); 
       board.add(word1); 
      } else { 
       board.add(word); 
      } 
     } 

     for (int i = 0; i <= num; i++) { 
      System.out.println(board.get(i)); 
     } 
    } 
} 
+0

谢谢,我没有发现错误。问题解决了 – Frank