Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I'm trying to print a certain triangle in Java by using Nested Loops and I am having difficulty. Could somebody give me a hand or just show me how it's done?
The triangle is:
123456654321
1234554321
12344321
123321
1221
11
I can print a triangle like
123456
12345
1234
123
12
1
Though I'm not sure how to reverse and make my loops count down afterwards.
This works:
public class Main {
public static void main(String args[]) {
int n = 6;
while (n > 0) {
for (int i = 1; i <= n; i++) {
System.out.print(i);
}
for (int i = n; i > 0; i--) {
System.out.print(i);
}
System.out.println("");
n--;
}
}
}
The second for loop assigns n to the iterator int i, executes the statements within the curly brackets, then decrements i using i-- until the condition i > 0 is no longer true.
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 2 years ago.
Improve this question
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int c[] = new int[n];
for(int c_i=0; c_i < n; c_i++){
c[c_i] = in.nextInt();
}
Arrays.sort(c);
int t=0;
for (int i=0;i<n-1;i++){
if(c[i]==c[i+1]){
t++;
i++;
}
}
System.out.println(t);
}
}
When I am removing i++ from if condition and making i=i+2 in for loop, the output is changing for certain test cases. Can someone explain me the reason as in both conditions i is incrementing by 2.
The i++ inside your loop's body is only performed if c[i]==c[i+1], so i is incremented by 1 in some iterations and by 2 in other iterations.
On the other hand, the loop's increment is always performed, so if the loop's increment is changed to i+=2 (and the i++ inside the loop's body is removed), i would be incremented by 2 in every iteration.
Therefore
for (int i=0;i<n-1;i++){
if(c[i]==c[i+1]){
t++;
i++;
}
}
is not equivalent to
for (int i=0;i<n-1;i+=2){
if(c[i]==c[i+1]){
t++;
}
}
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
Answered:
The assignment I was given is to write a Java program that outputs an isosceles triangle based on the users input. For instance, if a user were to input the number 5 after being prompted, the program would output
*****
****
***
**
*
We were instructed to use while loops, but I was not having any success with that. I decided to use for loops instead but am still having trouble. I've declared my variables and have prompted the user for input. Below you will find my for loops. Please help! All my program is doing is printing out a continuous column of pound signs.
//For loop
for (CountOfRows=UserInput; CountOfRows>0; CountOfRows--)
{
System.out.println("# ");
for (CountOfColumns=UserInput; CountOfColumns>0; CountOfRows++)
{
System.out.println("# ");
}
}
If you'd like to use a while loop, you can simply do this:
while(num > 0){ //stay in loop while the number is positive
int temp = num; //make a copy of the variable
while(temp-- > 0) //decrement temp each iteration and print a star
System.out.print("*"); //note I use print, not println
System.out.println(); //use println for newline
num--; //decrement number
}
You need to change your inner for loop so that it runs until the end of the index from the first for loop like this:
int num = 5;
for (int i = num; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
public class MultiTest1 {
public static void main(String[] args) {
int [][] lottogroups = {{1111,2222,3333,4444},{6666,7777,8888,9999},{11111,121212,131313}};
for(int i = 0;i < lottogroups.length ;i++){
System.out.println("Group :"+i);
for(int j = 0;j < lottogroups[i].length ;j++){
System.out.println(" Value "+j+" = "+lottogroups[i][j]);
}
}
}
}
There is a simple trick to find out whether a number is even, etc.
The % operator helps to see whether a number is divisible by a certain number. Even number are divisible by 2.
if (lottogroups[i][j] % 2 == 0) // number is even
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
2- (Display patterns) Write a method to display a pattern as follows:
1
2 1
3 2 1
…
n n-1 … 3 2 1
The method signature is public static void displayPattern(int n). the user enters number for how long they want the pattern to be.
I know how to set it up but don't know what code to use inside the method. This is how far I got-
Scanner input=new Scanner(System.in);
System.out.println("Please enter the num for how long the pattern is");
int n= input.nextInt();
}
public static void TheNum(int n){
}
for(int i=0; i <= n; i++) {
for(int j=i; j > 0; j--) {
System.out.print(j + " ");
}
System.out.println();
}
In the above loops. First loop goes from 0 to n times depending on value of n. Second loop is goes from value of i and keeps looping as long as j > 0.
First loop i=0 prints nothing, for i=1 j prints 1, only once then come out of loop and i become 2 and the inner loop prints 2 and 1 and then comes out of loop and prints new line and i become 3 and then inner loop print 3 and 2 and 1 and then come out of loop and so on.
Put above code in your method TheNum and then call your method passing it value of n that is provided by user as below:
TheNum(n);
Put above function call after the statement that takes the input.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
Improve this question
I am looking for a way to set the value index.totalNumCitations to the value I set in that while loop. I set the value to 1 initially so the for loop would execute at least once. I tried obtaining the value before the for loop and that also wasn't working. If someone could point me in the right direction I would be very appreciative.
for (int i = 0; i < index.totalNumCitations; i++) {
while (inputInteger > 50 || inputInteger < 0) {
inputInteger = Integer.parseInt(sc.nextLine());
index.Index(inputInteger);
}
This is the method used in the while loop
public void Index(int totalNumCit) {
if (totalNumCit <= 50 && totalNumCit > 0) {
this.totalNumCitations = totalNumCit;
citationIndex = new Citation[totalNumCit];
} else {
System.out.println("Error: Please enter a number between 0 and 50.");
}
}
When asking a question, try to describe more generally what you're trying to do.
People might be able to come up with a better solution.
But for this case i would suggest you put the while-loop before the for-loop. Because if you don't change the value of inputInteger elsewhere in the for-loop, the while-loop will only run in the first cycle of the for-loop.
while (inputInteger > 50 || inputInteger < 0) {
inputInteger = Integer.parseInt(sc.nextLine());
index.Index(inputInteger);
}
for (int i = 0; i < index.totalNumCitations; i++) {
//whatever you want to do
}