运行 Java 语言设置矩阵零代码中的时间错误消息
Run time error message in set matrix zero code in Java language
我在 运行 这段代码时遇到了这个错误,我不知道如何解决这个问题
运行时错误消息:
警告:命令行选项已启用安全管理器
警告:安全管理器已弃用,将在未来的版本中删除
java.lang.ArrayIndexOutOfBoundsException:索引 1 超出长度 1
在第 14 行,Solution.setZeroes
在第 54 行,DriverSolution。helper
在第 84 行,Driver.main
最后执行的输入:
[[1],[0]]
密码是:
class Solution {
public void setZeroes(int[][] matrix) {
boolean firstColumnZero = false;
boolean firstRowZero = false;
for(int i=0;i<matrix.length;i++){
if(matrix[i][0]==0){
firstColumnZero = true;
break;
}
}
for(int i=0;i<matrix.length;i++){
if(matrix[0][i]==0){
firstRowZero = true;
break;
}
}
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0){
matrix[i][0]=0;
matrix[0][j]=0;
}
}
}
for(int i=1;i<matrix.length;i++){
for(int j=1;j<matrix[0].length;j++){
if(matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j]=0;
}
}
}
if(firstColumnZero){
for(int i=0;i<matrix.length;i++){
matrix[i][0]=0;
}
}
if(firstRowZero){
for(int i=0;i<matrix[0].length;i++){
matrix[0][i]=0;
}
}
}
}
输出为:
已接受
运行时间:0 毫秒
您的意见
[[1,1,1],[1,0,1],[1,1,1]]
[[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出
[[1,0,1],[0,0,0],[1,0,1]]
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
预计
[[1,0,1],[0,0,0],[1,0,1]]
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
这段代码可能是您的问题:
for ( int i = 0; i < matrix.length; i++ )
{
if ( matrix[0][i] == 0 )
{
firstRowZero = true;
break;
}
}
您需要将 for 语句更改为:
for ( int i = 0; i < matrix[0].length; i++ )
我在 运行 这段代码时遇到了这个错误,我不知道如何解决这个问题
运行时错误消息:
警告:命令行选项已启用安全管理器
警告:安全管理器已弃用,将在未来的版本中删除
java.lang.ArrayIndexOutOfBoundsException:索引 1 超出长度 1
在第 14 行,Solution.setZeroes
在第 54 行,DriverSolution。helper
在第 84 行,Driver.main
最后执行的输入:
[[1],[0]]
密码是:
class Solution {
public void setZeroes(int[][] matrix) {
boolean firstColumnZero = false;
boolean firstRowZero = false;
for(int i=0;i<matrix.length;i++){
if(matrix[i][0]==0){
firstColumnZero = true;
break;
}
}
for(int i=0;i<matrix.length;i++){
if(matrix[0][i]==0){
firstRowZero = true;
break;
}
}
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0){
matrix[i][0]=0;
matrix[0][j]=0;
}
}
}
for(int i=1;i<matrix.length;i++){
for(int j=1;j<matrix[0].length;j++){
if(matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j]=0;
}
}
}
if(firstColumnZero){
for(int i=0;i<matrix.length;i++){
matrix[i][0]=0;
}
}
if(firstRowZero){
for(int i=0;i<matrix[0].length;i++){
matrix[0][i]=0;
}
}
}
}
输出为:
已接受
运行时间:0 毫秒
您的意见
[[1,1,1],[1,0,1],[1,1,1]]
[[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出
[[1,0,1],[0,0,0],[1,0,1]]
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
预计
[[1,0,1],[0,0,0],[1,0,1]]
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
这段代码可能是您的问题:
for ( int i = 0; i < matrix.length; i++ )
{
if ( matrix[0][i] == 0 )
{
firstRowZero = true;
break;
}
}
您需要将 for 语句更改为:
for ( int i = 0; i < matrix[0].length; i++ )