How to print a multiplication table in java - java

I have to create a program that prints a times table that
1)Has multiple methods.
2)Reads in two numbers where one is the upper limit and the second will be how deep the table goes (rows and columns essentially). It's a step up from the restriction of just square tables where it can only be, for example, 10x10 or 12x12.
3)Has a loop so that the user can run it again with different input.
4)Use Scanner to read I/P.
The output is supposed to look like this when you input 3 for the first number and 8 for the second number:
But it comes out like this: Output
import java.util.Scanner;
public class TimesTableRewrite
{
public static void main (String[] args)
{
Scanner in;
in = new Scanner (System.in);
boolean runAgain = false;
header();
String response;
do
{
printTable();
System.out.println("\nDo you want to go again? Y or N?");
response = in.next();
if ((response.charAt(0)=='Y'||response.charAt(0)=='y'))
{
runAgain = true;
}
else
{
runAgain = false;
}
}
while (runAgain);
footer();
}
public static void printTable()
{
Scanner in;
in = new Scanner (System.in);
int height;
int length;
System.out.println("Enter the first number to set up how far down you want the table to go.");
height= Integer.parseInt(in.next());
System.out.println("Enter the second number to extend the table horizontally");
length = Integer.parseInt(in.next());
for (int i = 1; i <= height; i++ )
{
for (int j = 1; j <= length; j++ ) //j is number of columns
{
if (i<height)
System.out.format("%4d", + i*j);
else
System.out.format("%4d", + i*j);
if (i==height)
{
System.out.println();
}
}
}
for (int i = 1; i <= height; i++ )
{
for (int j = 1; j <= length; j++ )
{
if (j<length)
System.out.format("%4d", + i*j);
else
System.out.format("%4d", + i*j);
if (j==length)
{
System.out.println();
}
}
}
}
public static void header()
{
System.out.println("This program will help you practice your times tables!");
System.out.print("This newer version will allow you to go beyond the 12 times tables!");
System.out.println("It will let you choose your upper limit \nand how deep the times table will go.");
System.out.println("Let's go!");
System.out.println("\nPlease enter two numbers to generate a multiplication table.");
}
public static void footer ()
{
System.out.println("That's all folks! See you next week!");
}
}

Replace this:
for (int i = 1; i <= height; i++ )
{
for (int j = 1; j <= length; j++ ) //j is number of columns
{
if (i<height)
System.out.format("%4d", + i*j);
else
System.out.format("%4d", + i*j);
if (i==height)
{
System.out.println();
}
}
}
for (int i = 1; i <= height; i++ )
{
for (int j = 1; j <= length; j++ )
{
if (j<length)
System.out.format("%4d", + i*j);
else
System.out.format("%4d", + i*j);
if (j==length)
{
System.out.println();
}
}
}
With this:
for (int i = 1; i <= height; i++ )
{
for (int j = 1; j <= length; j++ ) //j is number of columns
{
System.out.print(i * j);
System.out.print("\t"); //We add a tab after each number to form every column.
}
System.out.println(); //We add a berakline for each row.
}

Related

Why is there a single backlash which doesn't even continue with the pyramid?

The assignment was to create a pyramid by using for loops, print and println functions. I wrote the following code, though without errors, the last backslash is one character before where it should be. There should be five slashes/backslashes on the sides of the pyramid.
public static void main(String[] args) {
for ( int i = 0; i <5; i++) {
if ( i < 4) {
for ( int a = 4 - i; a > 0; a--) {
System.out.print(" ");
}
System.out.print("/");
}
for ( int a = 2 * i; a > 0; a--) {
System.out.print(" ");
}
System.out.println("\\");
}
}
The output should be like in
But it turns out like
What am I doing wrong?
The print for '/' is in the wrong place - it should be outside of the if:
for ( int i = 0; i < 5; i++) {
if ( i < 4) {
for ( int a = 4 - i; a > 0; a--) {
System.out.print(" ");
}
}
System.out.print("/");
for ( int a = 2 * i; a > 0; a--) {
System.out.print(" ");
}
System.out.println("\\");
}
But you don't actually need that if, the for loop condition will deal with not printing a blank on the last row:
for ( int i = 0; i < 5; i++) {
for ( int a = 4 - i; a > 0; a--) {
System.out.print(" ");
}
System.out.print("/");
for ( int a = 2 * i; a > 0; a--) {
System.out.print(" ");
}
System.out.println("\\");
}
And, just for fun, if you are using Java 11 or later you can replace the inner loops with the repeat method of String:
final int limit = 5;
for (int row = 0; row < limit; row++) {
System.out.println(" ".repeat(limit - (row + 1)) + '/' + " ".repeat(2 * row) + '\\');
}
But that is probably not how you are expected to do this assignment.

Stuck in an endless loop

I set a loop condition to be a<b. However it still continues when a>b .I get the loop in input==3
I haven't finished the code, so if you want to run it[input==3] you have to initialize the game size and after that the game .
I tried both while and for loops and im getting the same results.
import java.util.Scanner;
import java.util.Random;
public class Assignment2 {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Random rand = new Random();
int input;
int[][] board = null;
int rows = 0;
int columns = 0;
do {
System.out.println("0. End Program" + "\n" + "1. Initialize Game Size" + "\n" + "2. Initialize Game" + "\n"
+ "3. Print 1 stage Ahead" + "\n" + "4. Print k stage ahead");
input = sc.nextInt();
if (input < 0 || input > 4) {
System.out.println("Wrong menu input");
}
if (input == 0) {
System.out.println("End Program");
break;
}
if (input == 1) { // Setting a game board size
System.out.println("Enter number of rows");
rows = sc.nextInt();
System.out.println("Enter number of columns");
columns = sc.nextInt();
if (rows < 1 || columns < 1) {
System.out.println("Wrong game size");
} else {
board = new int[rows][columns];
System.out.println("set Game size");
}
}
if (input == 2) { // initialize a random game with 1 and 0
if (columns == 0 || rows == 0) {
System.out.println("No game size stored");
} else {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (rand.nextBoolean())
board[i][j] = 1;
else
board[i][j] = 0;
}
}
for (int k = 0; k < board.length; k++) {
for (int j = 0; j < board[k].length; j++) { // loop to check every square in the board
System.out.print(board[k][j] + " ");
}
System.out.println();
}
}
}
if (input == 3) { // 1 movement ahead in the game
for (int k = 0; k < board.length; k++) {
for (int j = 0; j < board[k].length; j++) { // loop to check every square in the board
if (board[k][j] == 1) {
int rowMove = 0; // checks for possible movement
int columnMove = 0; // checks for possible movement
int counter = 0;
for (rowMove = 0; rowMove < rows || columnMove < columns; rowMove++) {
for (columnMove = 0; rowMove < rows || columnMove < columns; columnMove++) {
int difrow = rowMove - rows; // row distance
int difcolumn = columnMove - columns; // column distance
if (difrow < 0) { // absolute number
difrow = -difrow;
}
if (difcolumn < 0) { // absolute number
difcolumn = -difcolumn;
}
if (difcolumn + difrow == 3) {
counter++;
}
}
}
if (counter == 1 || counter == 2) {
board[k][j] = 1;
} else {
board[k][j] = 0;
}
}
}
}
for (int k = 0; k < board.length; k++) {
for (int j = 0; j < board[k].length; j++) { // loop to check every square in the board
System.out.print(board[k][j] + " ");
}
System.out.println();
}
}
} while (input != 0);
}
}
in your inner for loop
for (columnMove = 0; rowMove < rows || columnMove < columns; columnMove++)
the condition is to iterate as long as rowMove < rows || columnMove < columns but only columnMove get advanced, so rowMove < rows is always true
have you tried this :
for (rowMove = 0; rowMove < rows; rowMove++) {
for (columnMove = 0; columnMove < columns; columnMove++)

How to make a diamond using nested for loops

So I was assigned to make a diamond with asterisks in Java and I'm really stumped. Here's what I've come up with so far:
public class Lab1 {
public static void main(String[] args) {
for (int i = 5; i > -5; i--) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = 0; j >= i; j--) {
System.out.print(" ");
}
System.out.println("*");
}
}
}
In order to make a diamond you need to set spaces and stars in shape. I have made this simple program using only nested loops since I am a beginner.
public class Diamond {
public static void main(String[] args) {
int size = 9,odd = 1, nos = size/2; // nos =number of spaces
for (int i = 1; i <= size; i++) { // for number of rows i.e n rows
for (int k = nos; k >= 1; k--) { // for number of spaces i.e
// 3,2,1,0,1,2,3 and so on
System.out.print(" ");
}
for (int j = 1; j <= odd; j++) { // for number of columns i.e
// 1,3,5,7,5,3,1
System.out.print("*");
}
System.out.println();
if (i < size/2+1) {
odd += 2; // columns increasing till center row
nos -= 1; // spaces decreasing till center row
} else {
odd -= 2; // columns decreasing
nos += 1; // spaces increasing
}
}
}
}
As you can see nos is the number of spaces. It needs to be decreased until the center row, and the number of stars needs to be increased but after the center row it's the opposite, i.e spaces increase and stars decrease.
size can be any number. I set it to 9 over here so I will have a size 9 star that is 9 rows and 9 columns max... number of space (nos) will be 9/2 = 4.5 .
But java will take it as 4 because int can not store decimal numbers and the center row will be 9/2 + 1 = 5.5, which will result in 5 as int.
So first you will make rows... 9 rows hence
(int i=1;i<=size;i++) //size=9
then print spaces like I did
(int k =nos; k>=1; k--) //nos being size/2
then finally stars
(int j=1; j<= odd;j++)
once the line ends...
You can adjust stars and spaces using an if condition.
for (int i = 0; i < 5; i++)
System.out.println(" *********".substring(i, 5 + 2 * i));
for (int i = 5; i > 0; i--)
System.out.println(" **********".substring(i - 1, 5 + (2 * i) - 3));
Note: Using Count Global variable we can manage space as well as star increment and decrement.
import java.util.*;
public class ParamidExample {
public static void main(String args[]) {
System.out.println("Enter a number");
Scanner sc = new Scanner(System.in);
int no = sc.nextInt();
int count = 1;
for (int i = 1; i <= 2 * no - 1; i++) {
for (int j = count; j <= no; j++) {
System.out.print(" ");
}
for (int k = 1; k <= count * 2 - 1; k++) {
System.out.print("* ");
}
if (i < no)
count++;
else
count--;
System.out.println("");
}
}
}
public class MyDiamond {
public static void main(String[] args) {
//Length of the pyramid that we want.151 is just an example
int numRows = 151;
//midrow is the middle row and has numRows number of *
int midrow = (numRows + 1) / 2;
int diff = 0;
for (int i = 1; i < numRows + 1; i++) {
for (int j = 1; j < numRows + 1; j++) {
if (((midrow - diff) <= j && (j <= midrow + diff))) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
if (i < midrow) {
diff++;
} else {
diff--;
}
}
}
}
public class Diamond {
//Size of the diamond
private int diagonal;
public Diamond(int diagonal) {
this.diagonal = diagonal;
}
public void drawDiamond() {
int n = diagonal;
for (int i = n / 2; i >= -n / 2; i--) {
for (int k = 0; k < i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= (n - i * 2) && i >= 0; j++) {
System.out.print("*");
}
for (int k = 1; k <= -i && i < 0; k++) {
System.out.print(" ");
}
for (int j = (n / 2) * 2 + 2 * i; j >= -(n % 2 - 1) && i < 0; j--) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
//You pass diamond size here in the constructor
Diamond a = new Diamond(21);
a.drawDiamond();
}
}
The main problem is parity of diagonal.
If it's even you can't properly draw top asterisk. So there is 2 types of diamonds - with even and odd diagonal (with 2 and 1 asterisk at the top).
I can see what you are trying to do and this is a pretty neat way to think about the diamond.
You will have some issues with the j counter when i goes negative..look at how to use Math.abs()
Also try writing some pseudo code in basic steps with comments to get the pattern clear:
//print 5 spaces + 1 star
//print 4 spaces + 2 stars
//print 3 spaces + 3 stars
//print 2 spaces+ 4 stars
.
.
.
//print 5 spaces + 1 star
Then, literally substitute variables (j and i) for the numbers.
You now have a model. This is often the hardest part in programming..getting the model right. Only jump into coding when you have a good idea for how the model works.
Once you have the variables substituted, you can try to convert the whole thing into an automated loop.
import java.util.Scanner;
public class MakeDiamond {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("Let's Creat Diamonds");
System.out.println("If number increases Diamonds gets bigger. Please input number lager than 1 : ");
int user_input = sc.nextInt(); //gets user's input
System.out.println("");
int x = user_input;
int front_space = -5;
for (int i = 0; i < 2 * user_input + 1; i++) {
for (int a = front_space; a < Math.abs(i - user_input); a++) {
System.out.print(" "); //Change a bit if diamonds are not in good shape
}
if (i < user_input + 1) {
for (int b = 0; b < 2 * i + 1; b++) {
System.out.print("* "); //Change a bit if diamonds are not in good shape
}
} else if (i > user_input) {
for (int c = 0; c < 2 * x - 1; c++) {
System.out.print("* "); //Change a bit if diamonds are not in good shape
}
x--;
}
System.out.print('\n');
}
System.out.println("\nRun Again? 1 = Run, 2 = Exit : ");
int restart = sc.nextInt();
System.out.println("");
if (restart == 2) {
System.out.println("Exit the Program.");
System.exit(0);
sc.close();
}
}
}
}
When making diamonds with while or for loops.
I think using 'Math.abs' will be the simplest way to make it.
You can put number by Scanner, and when input number increases diamonds will get bigger.
I used Eclipse to make this program.
so, the Space will be differ by your running environment. like another IDE, CMD or Terminal. if diamonds are not in good shape. Just change spaces.
package com.DiamondPrintingProgram;
import java.util.Scanner;
public class DiamondPrintingProgram {
public static void main(String[] args) {
int num = getInput();
int middle = (int) num / 2 + 1;
printOutput(num,middle);
}
public static int getInput() {
Scanner sc = new Scanner(System.in);
int num;
System.out.print("Enter a odd number: ");
while (true) {
num = sc.nextInt();
if (num % 2 != 0) {
break;
}
System.out.print("Please Enter a ODD NUMBER: ");
}
return num;
}
private static void printOutput(int num, int middle){
char asterisk = '*';
for (int j = 0; j < num; j++) {
for (int i = 1; i <= num; i++) {
if (j < middle) {
if ((i < (middle - j) || i > (middle + j))) {
System.out.print(' ');
} else {
System.out.print(asterisk);
}
} else {
if ((i < (j - middle + 2)) || (i > (2 * num - j - middle))) {
System.out.print(' ');
} else {
System.out.print(asterisk);
}
}
}
System.out.println();
}
}
}
I have the exact classwork in my university which also requires me to finish it in 3 for loops.
And this is how I did it.
In a simple way of explanation, I divide the diamond into two parts.
no. of lines
no. of spaces
no. of stars
total no. of slots
1
4
1
5
2
3
3
6
3
2
5
7
4
1
7
8
5
0
9
9
6
1
7
8
7
2
5
7
8
3
3
6
9
4
1
5
I want to find the no. of slots and the no. of spaces with each line, then allocating the no. of stars would be really easy.
And considering the no. of slots, line 1 - 5 and line 6 - 9 would become two separate groups(i.e. middleLine).
The equation of the no. of slots of the first half would be numberOfLines(i.e. i) + (middleLine - 1) where middleLine - 1 would be 4 when the maxNumberOfLines is 9.
The equation of the no. of slots of the last half would be middleLine(i.e. replacement of I) + (middleLine - 1)(i.e. same as above) - (i - middleLine) where i - middleLine would be -1 when i = 6.
And for the space, the first half would be middleLine - i and last half would be i - middleLine, which are exactly in a negative relationship(or symmetrical regarding their slopes).
public class printOutDiamondWith3Loops {
public static void main(String[] args) {
int userInput = 9;
double maxNumberOfLines = userInput;
// double type is used instead of integer type in order to prevent removal of remainder when a division performed.
double middleLine = Math.ceil(maxNumberOfLines/2);
// Print out the diamond.
for (int i = 1; i <= maxNumberOfLines; i++) {
// Determine the number of lines, which is also the maximum number of slots (the line in the middle).
if (i <= middleLine) {
// Separate the whole diamond into two parts(as mentioned above).
for (int j = 1; j <= i + ((middleLine - 1)); j++) {
// Determine the no. of slots in each line from line 1 to 5.
if (j <= middleLine - i) {
// Determine the no. of spaces and stars.
System.out.print(" ");
} else {
System.out.print("*");
}
}
} else { // i > middleLine
for (int k = 1; k <= (middleLine + (middleLine - 1)) - (i - middleLine); k++) {
// Determine the no. of slots in each line from line 6 to 9.
// For better understanding, I did not simplify the above condition.
// Noticeably, the first middleLine in above for loop is a replacement of i.
if (k <= i - middleLine) {
// Determine the no. of spaces and stars.
System.out.print(" ");
} else {
System.out.print("*");
}
}
}
System.out.println();
}
}
With such a framework, it is much easier to make further changes, such as letting the user input the no. of lines they want.
Hope this answer could help you.
I could lend you a more detailed version of my work, though not necessarily in need(the above explanation already explains the concepts): print-Out-Diamond-With-3-Loops-Advanced-Version.java
You can print a diamond of asterisks (mathematical operators) as follows:
int m = 4;
int n = 4;
for (int i = -m; i <= m; i++) {
for (int j = -n; j <= n; j++) {
int val = Math.abs(i) + Math.abs(j);
System.out.print(val > Math.max(m, n) ? " " : "∗");
if (j < n) {
System.out.print(" ");
} else {
System.out.println();
}
}
}
Output:
∗
∗ ∗ ∗
∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗ ∗ ∗
∗ ∗ ∗ ∗ ∗
∗ ∗ ∗
∗
Try this
public class Main {
public static void main(String[] args) {
int n = 50;
int space = n - 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("* ");
}
System.out.println("");
space--;
}
space = 0;
for (int i = n; i > 0; i--) {
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("* ");
}
System.out.println("");
space++;
}
}
}
java-11
Using String#repeat introduced as part of Java-11, you can do it using a single statement inside a single loop.
public class Main {
public static void main(String[] args) {
final int MID_ROW_NUM = 5;
for (int i = 1 - MID_ROW_NUM; i < MID_ROW_NUM; i++) {
System.out.println(" ".repeat(Math.abs(i)) + "*".repeat((MID_ROW_NUM - Math.abs(i)) * 2 - 1));
}
}
}
Output:
*
***
*****
*******
*********
*******
*****
***
*
By changing the space, you can also print a variant of the diamond:
public class Main {
public static void main(String[] args) {
final int MID_ROW_NUM = 5;
for (int i = 1 - MID_ROW_NUM; i < MID_ROW_NUM; i++) {
System.out.println(" ".repeat(Math.abs(i)) + "* ".repeat((MID_ROW_NUM - Math.abs(i)) * 2 - 1));
}
}
}
Output:
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
import java.util.Scanner;
public class Diamond {
/**
* #param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int input = in.nextInt();
int min = 1;
for (int i = 0; i < input; i++) {
for (int j = input - 1; j > i; j--) {
System.out.print(" ");
}
for (int k = 0; k < min; k++) {
if (k % 2 == 0) {
System.out.print("*");
} else {
System.out.print(".");
}
}
min += 2;
System.out.println();
}
int z = input + input - 3;
for (int i = 1; i < input; i++) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int k = 0; k < z; k++) {
if (k % 2 == 0) {
System.out.print("*");
} else {
System.out.print(".");
}
}
z -= 2;
System.out.println();
}
}
}
This should work. You probably only need most of the methods and printDiamond(_);
import java.util.Scanner;
public class StarsTry {
public static void main(String[] args) {
int reader;
Scanner kBoard = new Scanner(System.in);
do {
System.out.println("Insert a number of rows: ");
reader = kBoard.nextInt();
printDiamond(reader);
} while (reader != 0);
}
public static void printStars(int n) {
if (n >= 1) {
System.out.print("*");
printStars(n - 1);
}
}
public static void printTopTriangle(int rows) {
int x = 1;
for (int j = (rows - 1); j >= 0; j--, x += 2) {
printSpaces(j);
printStars(x);
System.out.print("\n");
}
}
public static void printSpaces(int n) {
if (n >= 1) {
System.out.print(" ");
printSpaces(n - 1);
}
}
public static void printBottomTriangle(int rows, int startSpaces) {
int x = 1 + (2 * (rows - 1));
for (int j = startSpaces; j <= (rows) && x > 0; j++, x -= 2) {
printSpaces(j);
printStars(x);
System.out.print("\n");
}
}
public static void printBottomTriangle(int rows) {
int x = 1 + (2 * (rows - 1));
for (int j = 0; j <= (rows - 1) && x > 0; j++, x -= 2) {
printSpaces(j);
printStars(x);
System.out.print("\n");
}
}
public static void printDiamond(int rows) {
printTopTriangle((int) rows / 2 + 1);
printBottomTriangle((int) rows / 2, 1);
}
}
import static java.lang.System.out;
import java.util.Scanner;
public class Diamond {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int row = sc.nextInt();
sc.close();
Diamond d = new Diamond();
d.upperDiamond(row);
d.lowerDiamond(row - 2);
}
public void upperDiamond(int a) {
for (int i = 0; i < a; i++) {
for (int j = a - 1; j > i; j--)
out.print(" ");
for (int k = 0; k < 2 * i - 1; k++)
out.print("*");
out.print("\n");
}
}
public void lowerDiamond(int b) {
for (int i = 0; i < b; i++) {
for (int j = 0; j <= i; j++)
out.print(" ");
for (int k = 0; k < 2 * (b - i) - 1; k++)
out.print("*");
out.print("\n");
}
}
}
public class Main {
public static void main(String[] args) {
int number = 23,l =1,diff = 1,rem = number/2,rep = 0;
for(int i=1;i<=number;i++){
if(i < number/2 +1){
for(int k=rem;k>=1;k--)
System.out.print(" ");
for(int j=1;j<=l;j++)
System.out.print("*");
diff = 2;
rem -= 1;
}
if(i >= number/2 +1){
for(int k=0;k<rep;k++)
System.out.print(" ");
for(int j=1;j<=l;j++)
System.out.print("*");
diff =3;
rep += 1;
}
System.out.println();
l = diff == 2 ? (l + 2) : (l - 2);
}
}
}
//Suitable for only Odd numbers...
public class Main {
private static int l =1;
public static void main(String[] args) {
int number =9;
for(int i=1;i<=2*number -1;i++){
if(i<=number){
for(int j=1;j<=(number-i);j++)
System.out.print(" ");
for(int j=1;j<=i;j++)
System.out.print("* ");
}
if(i>number){
for(int j=1;j<=i-number;j++)
System.out.print(" ");
for(int j=1;j<=number-l;j++)
System.out.print("* ");
l += 1;
}
System.out.println();
}
}
}
class Inc_Dec {
public static void main(String[] args) {
int le = 11;
int c = 0;
int j1 = (le / 2) + 1;
int j2 = le - j1;
for (int i = 1; i <= le; i++) {
if (c < j1) {
for (int k = (j1 - i); k > 0; k--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*" + " ");
}
c++;
System.out.println();
} else {
for (int k = (i - j1); k > 0; k--) {
System.out.print(" ");
}
for (int j = (le - i + 1); j > 0; j--) {
System.out.print("*" + " ");
}
System.out.println();
}
}
}
}
package practice;
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
if (i <= 5) {
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print(" *");
}
}
if (i > 5) {
for (int k = 0; k <= i - 6; k++) {
System.out.print(" ");
}
for (int j = 0; j <= 10 - i; j++) {
System.out.print(" *");
}
}
System.out.println();
}
}
}

Need help centering text output

import java.util.Scanner;
public class diamond {
public static void main (String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("Please enter an integer");
int lines = scan.nextInt();
for(int counter = 1; counter <= lines; counter++)
{
if (counter%2 != 0)
{
for(int count2 = 1; count2 <= counter; count2++){
System.out.print("*");
}
System.out.println();
}
}
}
}
I am supposed to ask the user for a number of lines and output a diamond made of asterisks that number of lines tall. I need some help figuring out how to center the asterisks. I know for strings there is some String.utils method or something, but the output comes in pieces based on a for loop, so I don't think that really works here. If it does, by all means let me know though.
You need to print a certain amount of spaces before each line. Then, you would need another for loop for the opposite.
Try this code:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter an integer ");
int lines = scan.nextInt();
for (int counter = 1; counter <= lines; counter++) {
if (counter % 2 != 0) {
for (int i = 0; i < lines - (counter / 2) - 3; i++) {
System.out.print(" ");
}
for (int count2 = 1; count2 <= counter; count2++) {
System.out.print("*");
}
System.out.println();
}
}
for (int counter = lines - 1; counter >= 1; counter--) {
if (counter % 2 != 0) {
for (int i = 0; i < lines - (counter / 2) - 3; i++) {
System.out.print(" ");
}
for (int count2 = 1; count2 <= counter; count2++) {
System.out.print("*");
}
System.out.println();
}
}
}
I think you should prepare a string to print out on each line, then you will know exactly how many characters it has, when the line increases, remove the two '*' in center of the string and add one " " in front of it, then print it out again.

how to display two-dimensional array in rectangular output?

This is not homework. I am a beginner (novice) java programmer, trying to read and complete the exercises at the end of ivor horton's beginning java book.
Write a program to create a rectangular array containing a multiplication table from 1 X 1 to 12 X 12. Output the table as 13 columns with the numeric values right aligned in columns. (The first line of output will be the column headings, the first column with no heading, then the numbers 1-12 for the remaining columns. The first item in each of the succeeding lines is the row heading which ranges from 1-12.
NOTE: I have only learned about Arrays & Strings, Loops & Logic, data types, variables, and calculations. I have not learned about classes and their methods and etc......so no fancy stuff please. THANKS!
public class Chapter4Exercise2 {
public static void main(String[] args)
{
int[][] table = new int[12][12];
for(int i=0; i <= table.length-1; i++)
{
for (int j=0; j <= table[0].length-1; j++)
{
table[i][j] = (i + 1) * (j + 1);
if (table[i][j] < 10)
System.out.print(" " + table[i][j] + " ");
else
if (table[i][j] > 10 && table[i][j] < 100)
System.out.print(" " + table[i][j] + " ");
else
System.out.print(table[i][j] + " ");
}
System.out.println(" ");
}
}
}
As long as the numbers are less than 1000, try this:
As #Mr1158pm said:
public class Chapter4Exercise2 {
public static void main(String[] args) {
int tableSize = 10;
int[][] table = new int[tableSize][tableSize];
for(int i=0; i < table.length; i++) {
for (int j=0; j < table[i].length; j++) {
table[i][j] = (i+1)*(j+1);
if(table[i][j] < 10) //Where i*j < 10
System.out.print(" "+(table[i][j])+" ");
else if(table[i][j] < 100) //Where i*j < 100
System.out.print(" "+(table[i][j])+" ");
else //Where i*j < 1000
System.out.print(" "+(table[i][j])+" ");
}
System.out.println("");
}
I don't think that you have to declare an array data structure to print out this table.
Just use two nested for loops and do calcs in the loops.
Here is a working method that you can work on. Just need to fix column alignment, add space here and there.
FYI row<10?" "+row:row is a form on inline if statement. If you haven't seen it before google it. It's quite useful.
public static void main(String[] args) {
for(int row=0; row<13; row++)
{
for(int col=0; col<13; col++)
{
if(row==0) //ffirst row
{
if(col==0)
System.out.print(" ");
else
System.out.print(col<10?" "+col:" "+col);
}
else
{
if(col==0)
System.out.print(row<10?" "+row:row);
else
System.out.print(row*col<10?" "+(row*col):(row*col<100? " "+(row*col):" "+(row*col)));
}
}
System.out.println();
}
}
import java.util.Scanner;
public class Back {
public static void main(String[] args) {
Scanner a1 =new Scanner(System.in);
int row,col;
String ch;
System.out.println("Enter width of screen:");
row = a1.nextInt();
System.out.println("Enter height of screen:");
col = a1.nextInt();
System.out.println("Enter background character:");
ch =a1.next();
String twoD[][] = new String[row][col];
int i,j;
for(i=0;i<row;i++)
for(j=0;j<col;j++){
twoD[i][j] = ch;
}
for(i=0;i<row;i++){
for(j=0;j<col;j++)
System.out.print(twoD[i][j]+" ");
System.out.println();
}
int width = 10;
int height = 10;
int[][] table = new int[width][height];
for(int i = 0; i < width; i++) {
for(int j = 0; j < height; j++) {
System.out.print(" " + table[i][j] + " ");
}
System.out.println("");
}

Categories