Java 如何从给定范围的数组中打印所有子数组?
我想打印范围为2.0的给定数组中的所有子数组 范例 对于上述数组,范围2的子数组如下所示Java 如何从给定范围的数组中打印所有子数组?,java,arrays,Java,Arrays,我想打印范围为2.0的给定数组中的所有子数组 范例 对于上述数组,范围2的子数组如下所示 {1,2}; {2,3}; {3,4}; 1 1 2 1 2 3 1 2 3 4 2 2 3 2 3 4 3 3 4 4 我有一个类,它打印数组的所有子数组,如下所示 public class PrintSubarrayMain { public static void main(String args[]){ PrintSubarrayMain psm=
{1,2};
{2,3};
{3,4};
1
1 2
1 2 3
1 2 3 4
2
2 3
2 3 4
3
3 4
4
我有一个类,它打印数组的所有子数组,如下所示
public class PrintSubarrayMain {
public static void main(String args[]){
PrintSubarrayMain psm=new PrintSubarrayMain();
int arr[]= {1,2,3,4};
psm.printSubArray(arr);
}
void printSubArray(int arr[])
{
int n=arr.length;
for (int i=0; i <n; i++) //This loop will select start element
{
for (int j=i; j<n; j++) //This loop will select end element
{
for (int k=i; k<=j; k++) //This loop will print element from start to end
{
System.out.print( arr[k]+" ");
}
System.out.println();
}
}
}
}
但我无法打印具有特定范围的子数组?请帮助我解决此问题。您可以按如下方式执行:
public class PrintSubarrayMain {
public static void main(String args[]) {
PrintSubarrayMain psm = new PrintSubarrayMain();
int arr[] = { 1, 2, 3, 4 };
psm.printSubArray(arr);
}
void printSubArray(int arr[]) {
for (int i = 0; i <arr.length-1; i++) {
int [] subArr=new int[2];
System.arraycopy(arr,i, subArr, 0, 2);
for (int j=0;j<2;j++)
System.out.print(subArr[j]+ " ");
System.out.println();
}
}
}
更新:按照您的要求,不使用System.arraycopy进行更新
public class PrintSubarrayMain {
public static void main(String args[]) {
PrintSubarrayMain psm = new PrintSubarrayMain();
int arr[] = { 1, 2, 3, 4 };
psm.printSubArray(arr);
}
void printSubArray(int arr[]) {
for (int i = 0; i <arr.length-1; i++) {
for(int j=i;j<i+2;j++)
System.out.print(arr[j]+" ");
System.out.println();
}
}
}
更新:根据您的要求添加范围
public class PrintSubarrayMain {
public static void main(String args[]) {
PrintSubarrayMain psm = new PrintSubarrayMain();
int arr[] = { 1, 2, 3, 4 };
int range = 3;
psm.printSubArray(arr, range);
}
void printSubArray(int arr[], int range) {
if (range <= arr.length)
for (int i = 0; i < arr.length - range + 1; i++) {
for (int j = i; j < i + range; j++)
System.out.print(arr[j] + " ");
System.out.println();
}
else
System.out.println("Range is greater than the size of the array");
}
}
不需要第二个循环。您可以声明一个变量范围,然后将结束值查找为j=i+range,最外层的循环应该具有终止条件,即i您对特定范围的含义是什么?我不确定您想要为(int I=0;I
实现什么。
您没有在代码中的任何地方传递范围值。@MatthiasLauber我在问题中提到过..需要按一些值对数组进行分组,上面的代码打印输出,但我不应该使用任何预定义的方法或集合,仅用于循环逻辑是的,它几乎满足了我的要求,但如何使其在范围3内无异常..这正是我想要的。。但是如何处理ArrayIndexOutOfBoundsException…对于范围3…声明一个变量“range”,并在第一个循环中将n-1替换为n-range,将j=i+2替换为j=i+range。
public class PrintSubarrayMain {
public static void main(String args[]) {
PrintSubarrayMain psm = new PrintSubarrayMain();
int arr[] = { 1, 2, 3, 4 };
psm.printSubArray(arr);
}
void printSubArray(int arr[]) {
for (int i = 0; i <arr.length-1; i++) {
for(int j=i;j<i+2;j++)
System.out.print(arr[j]+" ");
System.out.println();
}
}
}
1 2
2 3
3 4
public class PrintSubarrayMain {
public static void main(String args[]) {
PrintSubarrayMain psm = new PrintSubarrayMain();
int arr[] = { 1, 2, 3, 4 };
int range = 3;
psm.printSubArray(arr, range);
}
void printSubArray(int arr[], int range) {
if (range <= arr.length)
for (int i = 0; i < arr.length - range + 1; i++) {
for (int j = i; j < i + range; j++)
System.out.print(arr[j] + " ");
System.out.println();
}
else
System.out.println("Range is greater than the size of the array");
}
}
1 2 3
2 3 4
void printSubArray(int arr[])
{
int range=3;
int n=arr.length;
for (int i=0; i <=n-range; i++) //This loop will select start element
{
int j=i+range;
for (int k=i; k<j; k++) //This loop will print element from start to end
{
System.out.print( arr[k]+" ");
}
System.out.println();
}
}