Beginner: For loop excercise (stuck)
Hi everyone
First post on these forums and I'm hoping this will be a good spot to hang out.
I recently started on my new education here in Denmark which focuses on system development and obviously a large part of that is programming. I'm going through some of the initial programming excercises and were doing for loops atm.
We are using the book "Building Java Programs - A back to basics approach (2nd edition)" and im doing an excercise that goes like this:
4. Write a method called printSquare that accepts a minimum and maximum integer and prints a square of lines of
increasing numbers. The first line should start with the minimum, and each line that follows should start with the
next-higher number. The sequence of numbers on a line wraps back to the minimum after it hits the maximum. For
example, the call printSquare(3, 7);
should produce the following output:
34567
45673
56734
67345
73456
If the maximum passed is less than the minimum, the method produces no output.
Currently my code is looking like this, but I can't seem to get the last part right:
Code :
public class Opg4Kap3 {
public static void main(String[] args) {
printSquare(3, 7);
}
public static void printSquare(int a, int b) {
for (int k=a ; k<=b ; k++) {
System.out.print(k);
for (int i=k+1 ; i<=b ; i++) {
System.out.print(i);
}
for (int r=a ; r<=6 ; r++) {
System.out.print(r);
}
System.out.println();
}
}
}
If you compile it and run it you can see I'm getting this output, which is close but no cigar:
345673456
45673456
5673456
673456
73456
We don't need to turn this in or anything so I'm not really interested in the final answer, was just hoping someone could give me a clue to the next step so I can finish it though, since it annoys me I can't get the last part right (or if I have to do something completely different to begin with?).
Also this is not supposed to be done with anything but a method and for loops so no if statement tips or anything.
Thanks in advance
Re: Beginner: For loop excercise (stuck)
To get you thinking on the path, begin with what your problem is. The problem to be solved in code is you want to print some result based on some input.
Your input is minimum and maximum. Your output is to look something like this:
[min+0][min+1][min+2]...up to...[min+n=max]
[min+1][min+2]...up to...[min+n=max][min+0]
[min+2]...up to...[min+n=max][min+0][min+1]
...up to...[min+n=max][min+0][min+1][min+2]
[min+n=max][min+0][min+1][min+2]...up to...
So once you see the pattern, you can tell you are printing the same thing max-min times and just shifting the output over by one element.
Re: Beginner: For loop excercise (stuck)
Quote:
Originally Posted by
jps
To get you thinking on the path, begin with what your problem is. The problem to be solved in code is you want to print some result based on some input.
Your input is minimum and maximum. Your output is to look something like this:
[min+0][min+1][min+2]...up to...[min+n=max]
[min+1][min+2]...up to...[min+n=max][min+0]
[min+2]...up to...[min+n=max][min+0][min+1]
...up to...[min+n=max][min+0][min+1][min+2]
[min+n=max][min+0][min+1][min+2]...up to...
So once you see the pattern, you can tell you are printing the same thing max-min times and just shifting the output over by one element.
Thanks for the tip.
I decided to leave it for a while and come back to it, as your answer still didn't make me able to see the answer clearly enough.
Now many hours later I sat down, looked at it and suddenly was able to solve it in less than 5 min. Go figure.
Do you think this would be a good solution? I tried changing the numbers like this and it works as far as I can tell.
Code :
public class Opg4Kap3 {
public static void main(String[] args) {
printSquare(3, 7);
}
public static void printSquare(int a, int b) {
for (int k=a ; k<=b ; k++) {
System.out.print(k);
for (int i=k+1 ; i<=b ; i++) {
System.out.print(i);
}
for (int q=a; q<k; q++) {
System.out.print(q);
}
System.out.println();
}
}
}
Re: Beginner: For loop excercise (stuck)
Does the method print the correct output for any given input? If so you have solved the problem in code in at least one of the possible ways.
Did you try different input values?
Re: Beginner: For loop excercise (stuck)
As far as I can tell so far, it seems to make perfects squares of numbers and print them in the correct sequence they ask for in the excercise. So I think I solved it, you could try compiling it yourself if you have time and tell me if you can make it fail with a certain pair of numbers.
But I'm pretty sure it's working as intended like this?