&引用;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:17 线程“main”`java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:17`at java.lang.String.charAt(String.java:658) 在体育场(Stadium.java:104) 在statiumpanel.main(statiumpanel.java:53)

&引用;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:17 线程“main”`java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:17`at java.lang.String.charAt(String.java:658) 在体育场(Stadium.java:104) 在statiumpanel.main(statiumpanel.java:53),java,string,swing,indexoutofboundsexception,lang,Java,String,Swing,Indexoutofboundsexception,Lang,我一直收到这个信息,但我想不出来。我是java新手,我正在尝试用按钮制作体育场座位的gui 这是我的型号代码: Exception in thread "main" `java.lang.StringIndexOutOfBoundsException: String index out of range: 17` at java.lang.String.charAt(String.java:658) at Stadium.<init>(Stadium.java:

我一直收到这个信息,但我想不出来。我是java新手,我正在尝试用按钮制作体育场座位的gui

这是我的型号代码:

Exception in thread "main" `java.lang.StringIndexOutOfBoundsException: String index out of range: 17`        at java.lang.String.charAt(String.java:658)
    at Stadium.<init>(Stadium.java:104)
    at StadiumPanel.main(StadiumPanel.java:53)
公共级体育场{
公共静态int行=27;
公共静态int列=35;
私有静态字符串[]座位号={
"9 1234567890 123456789 1234567890 1", 
"8 1234567890 123456789 1234567890 2", 
"7 1234567890 123456789 1234567890 3", 
"6                                 4", 
"55   12345678 1234567 12345678   15", 
"44 8  1234567 1234567 1234567  1 26", 
"33 77                         12 37", 
"22 66   1234561234567123456   23 48", 
"11 55 0  12345123456712345  1 34 59", 
"99 44 98  123412345671234  12 45 11", 
"88 33 876 --------------- 123 56 22", 
"77 22 765|               |234 67 33", 
"66 11 654|               |345 78 44", 
"55       |               |       55", 
"44 87 543|               |456 11 66", 
"33 76 432|               |567 22 77", 
"22 65 321 --------------- 678 33 88", 
"11 54 21  432176543214321  89 44 99", 
"95 43 1  54321765432154321  0 55 11", 
"84 32   6543217654321654321   66 22", 
"73 21                         77 33", 
"62 1  7654321 7654321 7654321  8 44", 
"51   87654321 7654321 87654321   55", 
"4                                 6", 
"3 0987654321 987654321 0987654321 7", 
"2 0987654321 987654321 0987654321 8", 
"1 0987654321 987654321 0987654321 9" 
}; 
私有静态字符串[]SEAT_ROWS={
“Z CCCCCCCCCCCCFFFFFFFFIIIIIIIIIIK”,
“Z bbbbbbeeeeeeeeeeehhhhhhhhhhk”,
“Z aaaaaaaa ddddddddgggggggggg K”,
“ZK”,
“ZY BBBBBBDDDDDDD FFFFFF JK”,
“ZY T AAAAA CCCCC EEEEE H JK”,
“ZY TS GH JK”,
“ZY TS CCCC FFFFF IIIIII GH JK”,
“ZY TS X BBBBB Eeeeeeee HHHHHH L GH JK”,
“DC TS XW AAAADDDGGGG KL GH AB”,
“DC TS XWV------------------JKL GH AB”,
“DC TS XWV | | JKL GH AB”,
“DC TS XWV | | JKL GH AB”,
“DC | | AB”,
“DC RQ XWV | | JKL IJ AB”,
“DC RQ XWV | | JKL IJ AB”,
“DC RQ XWV------------------JKL IJ AB”,
“DC RQ XW SSSSPPPPPMM KL IJ AB”,
“XW RQ X ttttt qqqqq nnnnn L IJ LM”,
“XW RQ uuuuuu rrrrrrr ooooo IJ LM”,
“XW RQ IJ LM”,
“XW R ooooo MMMMMMM kkkkkk J LM”,
“XW PPPPPPPP nnnnnnnnlllllllllllm”,
“X M”,
“X ttttttttqqqqqqqqqnnnnnnnnnnnn M”,
“X uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
“X VVVV SSSSSSSSSSS PPPPPPPPPPM”
}; 
私有静态字符串[]SEAT_SECTIONS={
"3 3333333333 333333333 3333333333 3", 
"3 3333333333 333333333 3333333333 3", 
"3 3333333333 333333333 3333333333 3", 
"3                                 3", 
"33   22222222 2222222 22222222   33", 
"33 2  2222222 2222222 2222222  2 33", 
"33 22                 22 33", 
"33 22   1111111111111111111   22 33", 
"33 22 1  11111111111111111  1 22 33", 
"44 22 11  111111111111111  11 22 44", 
"44 22 111 --------------- 111 22 44", 
"44 22 111|               |111 22 44", 
"44 22 111|           |111 22 44", 
"44       |           |       44", 
"44 22 111|               |111 22 44", 
"44 22 111|           |111 22 44", 
"44 22 111 --------------- 111 22 44", 
"44 22 11  111111111111111  11 22 44", 
"33 22 1  11111111111111111  1 22 33", 
"33 22   1111111111111111111   22 33", 
"33 22                         22 33", 
"33 2  2222222 2222222 2222222  2 33", 
"33   22222222 2222222 22222222   33", 
"3                                 3", 
"3 3333333333 333333333 3333333333 3", 
"3 3333333333 333333333 3333333333 3", 
"3 3333333333 333333333 3333333333 3" 
}; 
私人座位[][]个座位;
公共体育场{
席位=新席位[行][列];
对于(int r=0;r字节段=(字节)字符.数字(secString.charAt(c),10);
char row=(char)rowString.charAt(c);
字节数=(字节)字符.数字(numString.charAt(c),10);
if(!Character.isleter(行))
座位[r][c]=空;
其他的
座位[r][c]=新座位(区段、排、编号);
} 
} 
} 
公共座位[][]getSeats(){返回座位;}
公共座位getSeat(国际行,国际列){返回座位[row][col];}
}

这是我的面板代码:

public class Stadium { 
 public static int ROWS = 27; 
 public static int COLUMNS = 35; 

 private static String[] SEAT_NUMBERS = { 
 "9 1234567890 123456789 1234567890 1", 
 "8 1234567890 123456789 1234567890 2", 
 "7 1234567890 123456789 1234567890 3", 
 "6                                 4", 
 "55   12345678 1234567 12345678   15", 
 "44 8  1234567 1234567 1234567  1 26", 
 "33 77                         12 37", 
 "22 66   1234561234567123456   23 48", 
 "11 55 0  12345123456712345  1 34 59", 
 "99 44 98  123412345671234  12 45 11", 
 "88 33 876 --------------- 123 56 22", 
 "77 22 765|               |234 67 33", 
 "66 11 654|               |345 78 44", 
 "55       |               |       55", 
 "44 87 543|               |456 11 66", 
 "33 76 432|               |567 22 77", 
 "22 65 321 --------------- 678 33 88", 
 "11 54 21  432176543214321  89 44 99", 
 "95 43 1  54321765432154321  0 55 11", 
 "84 32   6543217654321654321   66 22", 
 "73 21                         77 33", 
 "62 1  7654321 7654321 7654321  8 44", 
 "51   87654321 7654321 87654321   55", 
 "4                                 6", 
 "3 0987654321 987654321 0987654321 7", 
 "2 0987654321 987654321 0987654321 8", 
 "1 0987654321 987654321 0987654321 9" 
 }; 

 private static String[] SEAT_ROWS = { 
 "Z CCCCCCCCCC FFFFFFFFF IIIIIIIIII K", 
 "Z BBBBBBBBBB EEEEEEEEE HHHHHHHHHH K", 
 "Z AAAAAAAAAA DDDDDDDDD GGGGGGGGGG K", 
 "Z                                 K", 
 "ZY   BBBBBBBB DDDDDDD FFFFFFFF   JK", 
 "ZY T  AAAAAAA CCCCCCC EEEEEEE  H JK", 
 "ZY TS                         GH JK", 
 "ZY TS   CCCCCCFFFFFFFIIIIII   GH JK", 
 "ZY TS X  BBBBBEEEEEEEHHHHH  L GH JK", 
 "DC TS XW  AAAADDDDDDDGGGG  KL GH AB", 
 "DC TS XWV --------------- JKL GH AB", 
 "DC TS XWV|               |JKL GH AB", 
 "DC TS XWV|               |JKL GH AB", 
 "DC       |               |       AB", 
 "DC RQ XWV|               |JKL IJ AB", 
 "DC RQ XWV|               |JKL IJ AB", 
 "DC RQ XWV --------------- JKL IJ AB", 
 "DC RQ XW  SSSSPPPPPPPMMMM  KL IJ AB", 
 "XW RQ X  TTTTTQQQQQQQNNNNN  L IJ LM", 
 "XW RQ   UUUUUURRRRRRROOOOOO   IJ LM", 
 "XW RQ                         IJ LM", 
 "XW R  OOOOOOO MMMMMMM KKKKKKK  J LM", 
 "XW   PPPPPPPP NNNNNNN LLLLLLLL   LM", 
 "X                                 M", 
 "X TTTTTTTTTT QQQQQQQQQ NNNNNNNNNN M", 
 "X UUUUUUUUUU RRRRRRRRR OOOOOOOOOO M", 
 "X VVVVVVVVVV SSSSSSSSS PPPPPPPPPP M" 
 }; 

 private static String[] SEAT_SECTIONS = { 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3                                 3", 
 "33   22222222 2222222 22222222   33", 
 "33 2  2222222 2222222 2222222  2 33", 
 "33 22                 22 33", 
 "33 22   1111111111111111111   22 33", 
 "33 22 1  11111111111111111  1 22 33", 
 "44 22 11  111111111111111  11 22 44", 
 "44 22 111 --------------- 111 22 44", 
 "44 22 111|               |111 22 44", 
 "44 22 111|           |111 22 44", 
 "44       |           |       44", 
 "44 22 111|               |111 22 44", 
 "44 22 111|           |111 22 44", 
 "44 22 111 --------------- 111 22 44", 
 "44 22 11  111111111111111  11 22 44", 
 "33 22 1  11111111111111111  1 22 33", 
 "33 22   1111111111111111111   22 33", 
 "33 22                         22 33", 
 "33 2  2222222 2222222 2222222  2 33", 
 "33   22222222 2222222 22222222   33", 
 "3                                 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3" 
 }; 

 private Seat[][] seats; 

 public Stadium() { 
     seats = new Seat[ROWS][COLUMNS]; 

     for (int r=0; r< ROWS; r++) {  String secString = SEAT_SECTIONS[r]; 
         String rowString = SEAT_ROWS[r]; 
         String numString = SEAT_NUMBERS[r]; 
         for (int c=0; c< COLUMNS; c++) { 
              -->byte section =        (byte)Character.digit(secString.charAt(c),10); 
             char row = (char)rowString.charAt(c); 
             byte number = (byte)Character.digit(numString.charAt(c),10); 
             if (!Character.isLetter(row)) 
                seats[r][c] = null; 
             else 
                seats[r][c] = new Seat(section, row, number); 
         } 
     } 
 } 

 public Seat[][] getSeats() { return seats; } 
 public Seat getSeat(int row, int col) { return seats[row][col]; } 
import java.awt.*;
导入javax.swing.*;
公共类StadiumPanel扩展了JPanel{
私人体育场模式;
公共座椅[]座椅扣=新座椅[27][35];
公共体育场(m体育场){
模型=m;
座椅[]座椅按钮=m.getSeats();
setLayout(新网格布局(27,35));
挫折地面(颜色:白色);

用于(int row=0;row快速找出数据中存在问题的位置

使用


快速找出数据中存在问题的位置

使用


您在SEAT_部分中的一个字符串文字只有17个字符。您需要自己计算出哪一个。很可能,您已经使用制表符而不是空格填充了其中的一些空格。

您在SEAT_部分中的一个字符串文字只有17个字符。您需要自己计算出哪一个。大多数很可能,您已经使用制表符而不是空格填充了一些空格。

您的第一个问题出现在
SEAT\u部分的第6行。

  if (secString.length() != COLUMNS) {
     System.out.println ("error with row " + r);
  }
太短(27个字符),而不是要求的35个字符

你会的
  for (int c=0; c< secString .length(); c++) { 
  if (secString.length() != COLUMNS) {
     System.out.println ("error with row " + r);
  }
    "33 2  2222222 2222222 2222222  2 33",
    "33 22                 22 33", // Line 6
    "33 22   1111111111111111111   22 33",
    "44 22 111|           |111 22 44", // Line 12
    "44       |           |       44", // Line 13
    "44 22 111|               |111 22 44",
    "44 22 111|           |111 22 44", // Line 15
package com.example.seats;
public class Stadium { 
 public static int ROWS = 27; 
 public static int COLUMNS = 35; 

 private static String[] SEAT_NUMBERS = { 
 "9 1234567890 123456789 1234567890 1", 
 "8 1234567890 123456789 1234567890 2", 
 "7 1234567890 123456789 1234567890 3", 
 "6                                 4", 
 "55   12345678 1234567 12345678   15", 
 "44 8  1234567 1234567 1234567  1 26", 
 "33 77                         12 37", 
 "22 66   1234561234567123456   23 48", 
 "11 55 0  12345123456712345  1 34 59", 
 "99 44 98  123412345671234  12 45 11", 
 "88 33 876 --------------- 123 56 22", 
 "77 22 765|               |234 67 33", 
 "66 11 654|               |345 78 44", 
 "55       |               |       55", 
 "44 87 543|               |456 11 66", 
 "33 76 432|               |567 22 77", 
 "22 65 321 --------------- 678 33 88", 
 "11 54 21  432176543214321  89 44 99", 
 "95 43 1  54321765432154321  0 55 11", 
 "84 32   6543217654321654321   66 22", 
 "73 21                         77 33", 
 "62 1  7654321 7654321 7654321  8 44", 
 "51   87654321 7654321 87654321   55", 
 "4                                 6", 
 "3 0987654321 987654321 0987654321 7", 
 "2 0987654321 987654321 0987654321 8", 
 "1 0987654321 987654321 0987654321 9" 
 }; 

 private static String[] SEAT_ROWS = { 
 "Z CCCCCCCCCC FFFFFFFFF IIIIIIIIII K", 
 "Z BBBBBBBBBB EEEEEEEEE HHHHHHHHHH K", 
 "Z AAAAAAAAAA DDDDDDDDD GGGGGGGGGG K", 
 "Z                                 K", 
 "ZY   BBBBBBBB DDDDDDD FFFFFFFF   JK", 
 "ZY T  AAAAAAA CCCCCCC EEEEEEE  H JK", 
 "ZY TS                         GH JK", 
 "ZY TS   CCCCCCFFFFFFFIIIIII   GH JK", 
 "ZY TS X  BBBBBEEEEEEEHHHHH  L GH JK", 
 "DC TS XW  AAAADDDDDDDGGGG  KL GH AB", 
 "DC TS XWV --------------- JKL GH AB", 
 "DC TS XWV|               |JKL GH AB", 
 "DC TS XWV|               |JKL GH AB", 
 "DC       |               |       AB", 
 "DC RQ XWV|               |JKL IJ AB", 
 "DC RQ XWV|               |JKL IJ AB", 
 "DC RQ XWV --------------- JKL IJ AB", 
 "DC RQ XW  SSSSPPPPPPPMMMM  KL IJ AB", 
 "XW RQ X  TTTTTQQQQQQQNNNNN  L IJ LM", 
 "XW RQ   UUUUUURRRRRRROOOOOO   IJ LM", 
 "XW RQ                         IJ LM", 
 "XW R  OOOOOOO MMMMMMM KKKKKKK  J LM", 
 "XW   PPPPPPPP NNNNNNN LLLLLLLL   LM", 
 "X                                 M", 
 "X TTTTTTTTTT QQQQQQQQQ NNNNNNNNNN M", 
 "X UUUUUUUUUU RRRRRRRRR OOOOOOOOOO M", 
 "X VVVVVVVVVV SSSSSSSSS PPPPPPPPPP M" 
 }; 

 private static String[] SEAT_SECTIONS = { 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3                                 3", 
 "33   22222222 2222222 22222222   33", 
 "33 2  2222222 2222222 2222222  2 33", 
 "33 22                         22 33", 
 "33 22   1111111111111111111   22 33", 
 "33 22 1  11111111111111111  1 22 33", 
 "44 22 11  111111111111111  11 22 44", 
 "44 22 111 --------------- 111 22 44", 
 "44 22 111|               |111 22 44", 
 "44 22 111|               |111 22 44", 
 "44       |               |       44", 
 "44 22 111|               |111 22 44", 
 "44 22 111|               |111 22 44", 
 "44 22 111 --------------- 111 22 44", 
 "44 22 11  111111111111111  11 22 44", 
 "33 22 1  11111111111111111  1 22 33", 
 "33 22   1111111111111111111   22 33", 
 "33 22                         22 33", 
 "33 2  2222222 2222222 2222222  2 33", 
 "33   22222222 2222222 22222222   33", 
 "3                                 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3", 
 "3 3333333333 333333333 3333333333 3" 
 }; 

 private Seat[][] seats; 

 public Stadium() { 
     seats = new Seat[ROWS][COLUMNS]; 

     for (int r=0; r< ROWS; r++) {  String secString = SEAT_SECTIONS[r]; 
         String rowString = SEAT_ROWS[r]; 
         String numString = SEAT_NUMBERS[r]; 
         for (int c=0; c< COLUMNS; c++) { 
             byte section = (byte)Character.digit(secString.charAt(c),10); 
             char row = (char)rowString.charAt(c); 
             byte number = (byte)Character.digit(numString.charAt(c),10); 
             if (!Character.isLetter(row)) 
                seats[r][c] = null; 
             else 
                seats[r][c] = new Seat(section, row, number); 
         } 
     } 
 } 

 public Seat[][] getSeats() { return seats; } 
 public Seat getSeat(int row, int col) { return seats[row][col]; }


}
package com.example.seats;

public class Seat {
byte section;
char row;
byte number;

public Seat(byte section, char row, byte number) {
    this.section = section;
    this.row = row;
    this.number = number;
}

public int getSection() {
    return section;
}
}
package com.example.seats;

import java.awt.*;
import javax.swing.*;

public class StadiumPanel extends JPanel {
private Stadium model;

public Seat[][] seatButtons = new Seat[27][35];

public StadiumPanel(Stadium m) {
    model = m;

    Seat[][] seatButtons = model.getSeats();

    setLayout(new GridLayout(27, 35));
    setBackground(Color.WHITE);

    for (int row = 0; row < 27; row++) {
        for (int col = 0; col < 35; col++) {
            if (seatButtons[row][col] != null) {
                if (seatButtons[row][col].getSection() == 1) {
                    JButton b = new JButton();
                    b.setBackground(Color.RED);
                    add(b);
                } else if (seatButtons[row][col].getSection() == 2) {
                    JButton b = new JButton();
                    b.setBackground(Color.GREEN);
                    add(b);
                } else if (seatButtons[row][col].getSection() == 3) {
                    JButton b = new JButton();
                    b.setBackground(Color.BLUE);
                    add(b);
                } else if (seatButtons[row][col].getSection() == 4) {
                    JButton b = new JButton();
                    b.setBackground(Color.YELLOW);
                    add(b);
                }

            } else if (seatButtons[row][col] == null) {
                JLabel b = new JLabel();
                b.setBackground(Color.WHITE);
                add(b);
            }
        }
    }
}

public static void main(String args[]) {
    JFrame f = new JFrame("Stadium Panel Test");
    f.getContentPane().add(new StadiumPanel(new Stadium()));
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(649, 500);
    f.setVisible(true);
}
}
 public Seat[][] seatButtons = new Seat[27][35]
  public Seat[][] seatButtons = new Seat[][]