Java 按数字拆分数组的函数不起作用
我必须执行一个函数Java 按数字拆分数组的函数不起作用,java,Java,我必须执行一个函数splitArrayByNum,该函数将给出一个整数数组和一个整数分隔符,该分隔符将使用分隔符分割数组。此函数将返回2D数组:例如,splitArrayByNum([0,0,0,3,1,1,1],3)->[[0,0,0],[1,1,1]]和splitArrayByNum([3,1,3,3],3)->[[1]] 为什么我的代码不向控制台打印任何内容 package hw3; import java.util.Arrays; public class ArrayUtils {
splitArrayByNum
,该函数将给出一个整数数组和一个整数分隔符,该分隔符将使用分隔符分割数组。此函数将返回2D数组:例如,splitArrayByNum([0,0,0,3,1,1,1],3)->[[0,0,0],[1,1,1]]
和splitArrayByNum([3,1,3,3],3)->[[1]]
为什么我的代码不向控制台打印任何内容
package hw3;
import java.util.Arrays;
public class ArrayUtils {
public static void p(int[][] a)
{
for (int i = 0; i < a.length; i++)
{
System.out.println(Arrays.toString(a[i]));
}
}
public static void main(String[] args)
{
int[] x1={0,0,0,3,1,1,1}; int y1=3;
splitArrayByNum(x1, y1);
p(splitArrayByNum(x1, y1));
}
public static int lastIndexOf(int value, int[] nums) {
for (int i = nums.length - 1; i >=0; i--) {
if (nums[i] == value) {
return i;
}
}
return -1;
}
public static int firstIndexOf(int value, int[] nums) {
int index = -1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == value) {
index = i;
break;
}
}
return index;
}
\\ turns the number of elements between two Extreme instances
public static int mySpan(int value, int[] nums) {
if (lastIndexOf(value, nums)==-1)
return 0;
else
return lastIndexOf(value, nums) - firstIndexOf(value, nums) + 1;
}
public static int [][] splitArrayByNum(int[]input,int number){
//finding the'm' in 'arraySplit[m][]'
int []arrayInUse=new int[input.length];
arrayInUse=Arrays.copyOfRange(input, 0, input.length);
int counter=0;
while(mySpan(number,arrayInUse)!=0)
{
int first=arrayInUse[firstIndexOf(number,arrayInUse)];
int last= arrayInUse[lastIndexOf(number,arrayInUse)];
int k=1;
int m=mySpan(number,arrayInUse);
while (m>0)
{ \\ checking for deleting sequences from the sides
if( (arrayInUse[first]!=arrayInUse[first+k]) &&(arrayInUse[last]!=arrayInUse[last-k]))
continue;
if (arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(m<0)
continue;
first=first+k;
if ((arrayInUse[last])==(arrayInUse[last-k]))
m=m-2;
if(m<0)
continue;
last=last-k;
k=k+1;
}
if (m<0)
continue;
counter=counter+1;
arrayInUse=Arrays.copyOfRange(arrayInUse, first, last+1);
}
int [][]splitArray=new int[counter][];
// creating splitArray
counter=0;
arrayInUse=Arrays.copyOfRange(input, 0, input.length);
while(mySpan(number,arrayInUse)!=0)
{
int first=arrayInUse[firstIndexOf(number,arrayInUse)];
int last= arrayInUse[lastIndexOf(number,arrayInUse)];
int k=1;
int m=mySpan(number,arrayInUse);
while (m>0)
{ \\ checking for deleting sequences from the sides
if( (arrayInUse[first]!=arrayInUse[first+k]) &&(arrayInUse[last]!=arrayInUse[last-k]))
continue;
if (arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(m<0)
continue;
first=first+k;
if ((arrayInUse[last])==(arrayInUse[last-k]))
m=m-2;
if(m<0)
continue;
last=last-k;
k=k+1;
}
if (m<0)
continue;
arrayInUse = Arrays.copyOfRange(arrayInUse, first+1, last+1);
splitArray[counter] = Arrays.copyOfRange(arrayInUse,first+1,firstIndexOf(number,arrayInUse));
counter = counter+1;
}
return splitArray;
}
}
包装hw3;
导入java.util.array;
公共类数组{
公共静态void p(int[]a)
{
for(int i=0;i=0;i--){
if(nums[i]==值){
返回i;
}
}
返回-1;
}
公共静态int firstIndexOf(int值,int[]nums){
int指数=-1;
对于(int i=0;i0)
{\\n正在检查是否从侧面删除序列
if((arrayInUse[first]!=arrayInUse[first+k])&&(arrayInUse[last]!=arrayInUse[last-k]))
继续;
if(arrayInUse[first]==arrayInUse[first+k])
m=m-1;
如果(m你的的第一个块,而(m>0)
永远不会退出,因为你的两个减量m
的条件永远不会满足
while (m>0)
{
System.out.println(m); //Debugging statement to show that value of m never changes
if( (arrayInUse[first]!=arrayInUse[first+k]) &&(arrayInUse[last]!=arrayInUse[last-k]))
continue;
if (arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(m<0)
continue;
first=first+k;
if ((arrayInUse[last])==(arrayInUse[last-k]))
m=m-2;
if(m<0)
continue;
last=last-k;
k=k+1;
}
while(m>0)
{
System.out.println(m);//显示m的值永不改变的调试语句
if((arrayInUse[first]!=arrayInUse[first+k])&&(arrayInUse[last]!=arrayInUse[last-k]))
继续;
if(arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(M什么是“我的代码在运行时没有响应,为什么?”的意思?你能把代码的范围缩小一点吗?这几乎是代码转储,我除了“int[]x1={0,0,0,3,1,1};int y1=3;”在“运行”时返回[[0,0,0],[1,1]]它没有返回任何东西此代码甚至没有编译!!!首先修复编译错误!mySpan-将两个实例之间的元素数转换为极端实例。splitArrayByNum在第一部分检查返回数组的长度,在第二部分创建数组@Forager,谢谢!(将“continue”更改为“break”将修复此问题,但仍无法工作…)但是调试有什么帮助呢?当我在调试模式下单击run时,它没有显示任何内容。调试模式将在程序到达设置断点的行时暂停程序的执行。为此,请在有问题的行上按Ctrl+Shift+B。或者,您可以像我一样在打印语句中添加语句,以查看代码段是否正在运行,或者检查变量的值