- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码是这样的
package textExcel;
public class Spreadsheet implements Grid{
private int row = 20;
private int col = 12;
private Cell[][] sheet;
public Spreadsheet(){
sheet = new Cell[20][12];
for(int x = 0; x < sheet.length; x++) {
for(int y = 0; y < sheet[x].length; y++) {
sheet[x][y] = new EmptyCell();
}
}
}
public String processCommand(String command){ // processes a user command, returns string to display, must be called in loop from main
if(command.equals("quit")) {
return "";
}
else if(command.equals("clear")){
sheet = new Cell[20][12];
for(int x = 0; x < sheet.length; x++) {
for(int y = 0; y < sheet[x].length; y++) {
sheet[x][y] = new EmptyCell();
}
}
return getGridText();
}
else if(((Character.isDigit(command.charAt(1))) && (Character.isLetter(command.charAt(0)))) && (command.length() == 2)) {
int col = (int)command.charAt(0) - 65;
int row = (int)command.charAt(1) - 49;
return sheet[col][row].fullCellText();
}
else if((command.length()) > 5 && (command.substring(0,4).equals("clear"))) {
int col = (int)command.charAt(6) - 65;
int row = (int)command.charAt(7) - 49;
sheet[col][row] = new EmptyCell();
return getGridText();
}
else if(command.contains(" = ")) {
int col = (int)command.charAt(0) - 65;
int row = (int)command.charAt(1) - 49;
System.out.println("col = " + col +", row = " + row);
sheet[col][row] = new TextCell(command.substring(7, command.indexOf("\"")));
System.out.println(sheet[col][row].abbreviatedCellText());
}
return "";
}
public int getRows(){ // returns number of rows in grid
return row;
}
public int getCols(){ // returns number of columns in grid
return col;
}
public Cell getCell(Location loc){ // returns cell at loc
int col = loc.getCol();
int row = loc.getRow();
return sheet[row][col];
}
public String getGridText(){ // returns entire grid, formatted as text for display
String formatted;
formatted = " |A |B |C |D |E |F |G |H |I |J |K |L |\n";
for(int x = 0; x < sheet.length - 11; x++) {
String temp = (x+1) + " |";
for(int y = 0; y < sheet[x].length; y++) {
System.out.println(sheet[x][y].abbreviatedCellText());
temp = temp + sheet[x][y].abbreviatedCellText() + "|";
}
formatted = formatted + temp + "\n" ;
}
for(int x = 9; x < sheet.length; x++) {
String temp = (x+1) + " |";
for(int y = 0; y < sheet[x].length; y++) {
System.out.println(sheet[x][y].abbreviatedCellText());
temp = temp + sheet[x][y].abbreviatedCellText() + "|";
}
formatted = formatted + temp + "\n" ;
}
return formatted;
}
}
当我在第 43 行输入 A1 = "apple"时,我收到 java.lang.StringIndexOutOfBoundsException。在使用调试器和打印语句查看索引问题后,我不确定索引问题来自哪里。我正在使用来自另一个类中使用的扫描器类的输入来运行该命令。
编辑:对于运行所有这些所需的代码:
package textExcel;
//*******************************************************
// DO NOT MODIFY THIS FILE!!!
//*******************************************************
public interface Cell
{
public String abbreviatedCellText(); // text for spreadsheet cell display, must be exactly length 10
public String fullCellText(); // text for individual cell inspection, not truncated or padded
}
package textExcel;
public class EmptyCell implements Cell{
public static final String CELL = " ";
public String abbreviatedCellText(){ // text for spreadsheet cell display, must be exactly length 10
return CELL;
}
public String fullCellText(){ // text for individual cell inspection, not truncated or padded
return CELL;
}
}
package textExcel;
//*******************************************************
//DO NOT MODIFY THIS FILE!!!
//*******************************************************
public interface Grid
{
// Grid interface, must be implemented by your Spreadsheet class
String processCommand(String command); // processes a user command, returns string to display, must be called in loop from main
int getRows(); // returns number of rows in grid
int getCols(); // returns number of columns in grid
Cell getCell(Location loc); // returns cell at loc
String getGridText(); // returns entire grid, formatted as text for display
}
package textExcel;
//*******************************************************
//DO NOT MODIFY THIS FILE!!!
//*******************************************************
public interface Location
{
// represents a location like B6, must be implemented by your
SpreadsheetLocation class
int getRow(); // gets row of this location
int getCol(); // gets column of this location
}
package textExcel;
//Update this file with your own code.
public class SpreadsheetLocation implements Location
{
private String Loc;
private int col;
private int row;
public SpreadsheetLocation(String cellName)
{
String loc = cellName;
row = Integer.parseInt(loc.substring(1)) - 1;
col = loc.charAt(0) - 'A';
}
@Override
public int getRow()
{
// TODO Auto-generated method stub
return row - 1;
}
@Override
public int getCol()
{
// TODO Auto-generated method stub
return col - 1;
}
}
package textExcel;
public class TextCell implements Cell {
private String cell;
public TextCell(String cell) {
this.cell = cell;
}
@Override
public String abbreviatedCellText() {
if(cell.length() > 11) {
return cell.substring(0,9);
}
else {
if(cell.length() == 0) {
return cell + " ";
}
else if(cell.length() == 1) {
return cell + " ";
}
else if(cell.length() == 2) {
return cell + " ";
}
else if(cell.length() == 3) {
return cell + " ";
}
else if(cell.length() == 4) {
return cell + " ";
}
else if(cell.length() == 5) {
return cell + " ";
}
else if(cell.length() == 6) {
return cell + " ";
}
else if(cell.length() == 7) {
return cell + " ";
}
else if(cell.length() == 8) {
return cell + " ";
}
else if(cell.length() == 9) {
return cell + " ";
}
else {
return " ";
}
}
}
@Override
public String fullCellText() {
// TODO Auto-generated method stub
return cell;
}
}
package textExcel;
import java.io.FileNotFoundException;
import java.util.Scanner;
// Update this file with your own code.
public class TextExcel
{
public static void main(String[] args)
{
SpreadsheetLocation loc = new SpreadsheetLocation("L20");
Spreadsheet test = new Spreadsheet();
System.out.println(test.getGridText());
System.out.println(test.getCell(loc));
Scanner sc = new Scanner(System.in);
System.out.println("input :");
String input = sc.nextLine();
test.processCommand(input);
System.out.println("input :");
input = sc.nextLine();
test.processCommand(input);
System.out.println("input :");
input = sc.nextLine();
test.processCommand(input);
System.out.println("input :");
input = sc.nextLine();
test.processCommand(input);
System.out.println("input :");
input = sc.nextLine();
test.processCommand(input);
}
}
最佳答案
由于您提供的代码缺少某些类定义,因此我无法运行它。我建议你在第43行进行调试,可能是substring函数导致了异常。最好使用StringUtils来进行字符串处理。
看看这一行。
sheet[col][row] = new TextCell(command.substring(7, command.indexOf("\"")));
当您输入:A1 =“apple”command.indexOf("\"")
的结果是 5。所以 command.substring(7, 5)
导致异常。
起始位置7是什么意思?
将此行修改为 sheet[col][row] = new TextCell(command.substring(6, command.length()-1));
你会得到结果:
col = 0, row = 0
apple
我想这就是你想要的——打印引号之间的字符串。对吗?
关于java - 实例化一个新对象,从参数中获取一个indexoutofbounds,它是一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084193/
对于我的 CS 类,我必须编写一个从 LinkedList 扩展的 Stacks 接口(interface)。但是,我的 peek() 方法显然有一个错误。当我将其实现到我的其他程序之一时,我返回一个
每次我尝试运行此方法 private void resetOdds() { mOdds[1] = 0.10; mOdds[2] = 0.25; mOdds[3] = 0.35;
我正在学习Java语言,我正在尝试制作MasterMind游戏。我在尝试编译时收到以下错误,在尝试调试代码后,我找不到错误: Exception in thread "main" java.lang.
下面的代码旨在获取一个 byte[] 和其他一些东西(参见它提供的代码)。然后它构建一个具有一定长度的数据包并返回它。我的问题是,当我将文件读入主程序时,我需要数据报包的缓冲区为剩余要发送的字节数(如
我正在做一项作业,需要计算位置 (x,y) 周围像素的 NxN 平均值。 当我传入一个大小变量时,我试图创建一个通用函数来执行此操作。 我只允许大小或 NxN 矩阵为 3x3、5x5 或 7x7。 我
这个问题在这里已经有了答案: Captured variable in a loop in C# (10 个答案) 关闭 3 年前。 我有两个代码循环片段,后者按预期工作,而前者抛出异常。为什么 f
我正在尝试统计一个计数数组,以跟上一组 50 个选择,其中每个选择有三个选项。根据我的导师的说法,计数数组应该有 150 个元素 (3 x 50 = 150)。但我在第 55 行不断收到 IndexO
我正在尝试构建一棵区间树。在这一部分中,我必须按升序排列所有左端点,并按升序排列所有右端点,并将它们放入单点列表中(无重复)。但是,当我尝试将正确的端点合并到点列表中时,我不断收到 indexOutO
我有一个看起来像这样的文本文件: Aaaaa 0.55 2 bbb 2.1 0.25 ccccc 71 21 ..... ..
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 7 年前。 此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-topic在这里
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
我正在尝试计算金字塔的最小自下而上路径总和。我正在从文本文件读取输入。 我的文本文件示例: 5 6 6 5 3 5 8 3 9 2 1 4 7 9 2 7 第一行告知程序有关金字塔的大小,其他行正在组
我收到以下错误。 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 at ja
有人能告诉我为什么我总是收到 IndexOutOfBoundsException 吗? Cheeses 只是一个包含一组字符串的数组。Alphabets 是一个包含单个字符串变量的类。 我正在尝试编写
我正在编写一个程序,该程序读取文件,然后检查是否有相同数量的右括号和左括号。因此,我所做的是使用 FileInputStream 和 Scanner 类来读取文件并将每个字符存储在 ArrayList
我正在尝试手动引发数组的索引越界异常。我知道要抛出常规异常,我可以执行以下操作: if(x>array.length){ throw new Exception("Bad choice!"); } 但
您好,我正在为编程类(class)编写一个程序,我得到: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18
你好,我正在尝试编写 QuickSort 代码,但我总是遇到索引越界?我的代码如下: public class QuickSort { public void quickSort(ArrayL
到目前为止,这让我很困惑。 尝试运行此特定查询时,我不断收到 CursorIndexOutOfBounds。 Cursor c = db.rawQuery("SELECT * FROM tab
所以,我正在做一项作业,让一个类(class)接收为 Conway 的 Game Of Life 设置的文本文件。我已经写了所有东西,但是很难测试,因为我的错误处理很糟糕。我已经阅读了关于 try、c
我是一名优秀的程序员,十分优秀!