如何在Java中打印3的子集?

问题描述 投票:0回答:1

我正在上大学提供的课程,并且在代码挑战中遇到一个问题。

问题是:编写Java代码以打印大小为3的所有子集。

样本输入:

arr_size = 5

arr[] = {1, 7, 3, 4, 9}

样本输出:

(1, 7, 3) (1, 7, 4) (1, 7, 9) (1, 3, 4) (1, 3, 9) (1, 4, 9)

(7, 3, 4) (7, 3, 9) (7, 4, 9)

(3, 4, 9)

我为此编写的代码:

import java.util.Scanner;
class Main{
    public static void main(String args[]) {
       // Type your code here
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      int a[] = new int[n];
      for(int i=0; i<n;i++)
        a[i] = in.nextInt();
      for(int i=0;i<n;i++)
      {
        for(int j=i+1;j<n;j++)
        {
          for(int k = j+1; k<n; k++)
          {
            System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ") ");

          }
        }
        if(i<2)
          System.out.print("\n");
      }
    }
}

我的输出与预期的输出软件匹配,但显示错误。我不知道哪里出了问题。有人可以帮我吗?

“

“

这是我的输出和预期输出的屏幕截图:

java subset
1个回答
0
投票

问题是由于您在下面的行末添加了无条件的额外空间:

System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ") ");

空格应位于两个子集之间,但不能位于行尾。编写如下:

if (j < n - 2) {
    System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ") ");
} else {
    System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ")");
}

如果您对三元运算符感到满意,则可以按如下所示只写一行:

System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + (j < n - 2 ? ") " : ")"));
© www.soinside.com 2019 - 2024. All rights reserved.