java - 检查正在运行哪个方法

标签 java println

我只是有一个问题,如何查看 println 中正在运行哪个方法来验证我的代码是否正确。我想看看当用户输入数字时,强力代码是否运行或最大子数组方法是否运行。我该如何在 main 方法的 println 中编写它?

package a3;

import java.util.Scanner;

public class MaxSubarraySum2 {
public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter number of elements in array");
    int N = scan.nextInt();
    int[] arr = new int[ N ];
    /* Accept N elements */
    System.out.println("Enter "+ N +" elements");
    for (int i = 0; i < N; i++)
        arr[i] = scan.nextInt();
    System.out.println("Max sub array sum  = "+ max_sum(arr));
}
public static int max_sum(int[] arr)
{

     int Crossover = 4;
     if (Crossover > arr.length) {
         //Max Sub array is being used
         return max_sum(arr, 0, arr.length - 1); 

     }
    //Brute Force is being used
     else {
            int N = arr.length, max = Integer.MIN_VALUE;
            for (int i = 0; i < N; i++)
            {
                int sum = 0;
                for (int j = i; j < N; j++)
                {
                    sum += arr[j];
                    if (sum > max)
                        max = sum;
                }
            }

            return max;  
     }


}
// Max Sub Array 
public static int max_sum(int[] arr, int low, int mid, int high)
{
    int l = Integer.MIN_VALUE, r = Integer.MIN_VALUE;
    for (int i = mid, sum = 0; i >= low; i--)
        if ((sum += arr[i]) > l)
            l = sum;
    for (int i = mid +1, sum = 0; i <= high; i++)
        if ((sum += arr[i]) > r)
          r = sum;
    return l + r;
}
public static int max_sum(int[] arr, int low, int high)
{
   if (low == high)
     return arr[low];     
   int mid = (low + high)/2;
   int max1 = max_sum(arr, low, mid);
   int max2 = max_sum(arr, mid + 1, high);
   int max3 = max_sum(arr, low, mid, high);
   return Math.max(Math.max(max1, max2), max3); 
}    
}

最佳答案

println 必须在 main 函数中吗?我建议将此类调试输出放在做出决定的地方:

if (Crossover > arr.length) {
     // Max Sub array is being used
     System.out.println("Max Sub array is being used");

     return max_sum(arr, 0, arr.length - 1); 
} else {
    // Brute Force is being used
    System.out.println("Brute Force is being used");

    int N = arr.length, max = Integer.MIN_VALUE;
    for (int i = 0; i < N; i++)
    {
        int sum = 0;
        for (int j = i; j < N; j++)
        {
            sum += arr[j];
            if (sum > max)
                max = sum;
        }
    }

    return max;  
}

关于java - 检查正在运行哪个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32446889/

相关文章:

java - 带有方法 toString() 的新类

scala - Scala 中的 println 与 System.out.println

java - 无法在 onItemClickListener 中获取项目

java - 我需要帮助让我的输入按钮在用鼠标单击时正常工作

java - 使用 Java 登录 SiteMinder

java - Java 程序中令人困惑的输出

java - 我应该返回什么而不是 null?

java - JVM 如何优化 Fluent api

java - system.out.println 必须在 edt 上吗?

Swift println 命令不在控制台中输出