In: Computer Science
write a program named Combinations.java that gets user input for two integers n and k, then computes and displays the value of n choose k using the efficient method of equation. you may assume that the user's input makes sense (i.e, n and k are non negative, and n is at least k). your code should work for any reasonably small non- negative values of n and k, including zero.
//Combinations.java
import java.util.Scanner;
public class Combinations {
// Calculating factorial of n
public static int factorial(int n)
{
int result = 1;
if (n < 0) {
return 0;
}
while (n > 1) {
result *= n;
n--;
}
return result;
}
// Calculating n choose k
public static int combinations(int n, int k){
if(n>=0 && k>=0)
return factorial(n)/(factorial(n-k)*factorial(k));
else
return -1;
}
// main method
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
// Reading input
System.out.print("Please enter a value for n: ");
int n = scanner.nextInt();
System.out.print("Enter k: ");
int k = scanner.nextInt();
// Making call to combinations function
int result = combinations(n,k);
// Printing output
if(result==-1){
System.out.println("Error: Invalid input. Both n and k should be positive");
}
else{
System.out.println("Result: "+result);
}
}
}


