问题
I made a Java program that prints out a pascal triangle, however I can't figure out how to correctly position it.
Program 1
public class Triangle {
public static void main() {
System.out.println("\nTriangle: ");
int row = 11;
long[][] triangle = new long[row][row];
triangle[1][1] = 1;
System.out.print(triangle[1][1] + "\n");
for (int i = 2; i<row; i++) {
for (int n = 1; n<row; n++) {
triangle[i][n] = triangle[i-1][n-1] + triangle[i-1][n];
if (triangle[i][n]>0) {
System.out.print(triangle[i][n] + " ");
}
}
System.out.println();
}
}
}
Output:
1
1 1
1 2 1
1 3 3 1
Program 2
public class Triangle {
public static void main() {
System.out.println("\nTriangle: ");
int row = 11;
long[][] triangle = new long[row][row];
int x = 1;
while (x<row-1) {
System.out.print(" ");
x++;
}
triangle[1][1] = 1;
System.out.print(triangle[1][1] + "\n");
for (int i = 2; i<row; i++) {
x = i;
while (x<row-1) {
System.out.print(" ");
x++;
}
for (int n = 1; n<row; n++) {
triangle[i][n] = triangle[i-1][n-1] + triangle[i-1][n];
if (triangle[i][n]>0) {
System.out.print(triangle[i][n] + " ");
}
}
System.out.println();
}
}
}
Output:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 //(Notice this line is incorrectly positioned)
When the triangle approaches multiple digit numbers, it starts to break down and makes it ugly. Can someone explain how I can display a normal triangle instead of this ugly one?
回答1:
Dynamic Pascal Triangle generator is here:
import java.io.IOException;
import java.util.Scanner;
public class Main
{
static double fact(int n)
{
double result = 1;
for (double i = 1; i <= n; i++)
result *= i;
return result;
}
static double combine(int n, int r)
{
return ((fact(n)) / (fact(n - r) * fact(r)));
}
static void pascalTriangle(int n)
{
int n2 = n;
for (int i = 0; i < n; i++)
{
for (int space = 8 * (n2 - 1); space >= 0; space--)
{
System.out.printf(" ");
}
for (int j = 0; j <= i; j++)
{
System.out.printf("%14.0f", combine(i, j));
System.out.printf(" ");
}
System.out.println();
n2--;
}
}
public static void main(String[] args) throws IOException, InterruptedException
{
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.print("Enter Number of Lines(n): ");
int n = sc.nextInt();
pascalTriangle(n);
System.out.println("Press any key to exit! ");
sc.nextByte();
}
}
回答2:
/**
*
* @author Ranjith
*/
public class JavaApplication2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int i;
int x;
int n=15; //number of rows
String newLine = System.getProperty("line.separator");
for(i=0;i<n;i++)//loop to adjust spacing
{
x = i;
while (x<n-1) {
System.out.print(" ");
x++;
}
fib(i); //fibonacci function is called
System.out.print(newLine );
}
}
public static void fib (int num) //fibonacci function
{
int[] febo = new int[100];
febo[0] = 0;
febo[1] = 1;
for(int i=2; i < num; i++){
febo[i] = febo[i-1] + febo[i-2];
}
for(int i=0; i< num; i++){
System.out.print(febo[i] + " ");
}
}
}
回答3:
Try this ...
Results:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
import java.util.*;
public class HelloWorld{
static int binCoeff(int n, int k) {
int res = 1;
if (k > n - k)
k = n - k;
for (int i = 0; i < k; ++i)
{
res *= (n - i);
res /= (i + 1);
}
return res;
}
static void pascalTriangle(int lines) {
for(int i = 0;i < lines; i++) {
for(int j = 0; j<=i; j++)
System.out.print(HelloWorld.binCoeff(i, j) + " ");
System.out.println();
}
}
public static void main(String []args) {
System.out.println("Results: ");
HelloWorld.pascalTriangle(8);
}
}
回答4:
class pascal
{
static void main(int n)
{
int a[][]=new int[n][n+1];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=0;
}
}
a[0][1]=1;
int k=5;int p=0;
for(int i=1;i<n;i++)
{
for(int j=1;j<n+1;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(int i=0;i<a.length;i++)
{
for(p=n+-i;p>0;p--)
{
System.out.print(" ");
}
for(int j=0;j<a[i].length;j++)
{
if(a[i][j]!=0)
{
System.out.print(a[i][j]+" ");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
}
来源:https://stackoverflow.com/questions/18938928/pascal-triangle-positioning