我需要编写一个接受两个int作为参数的方法,一个min和一个max。在第一行,我需要打印该范围内的所有数字(包括在内)。在下一行,我从min + 1开始,打印所有数字到最大值,然后返回到范围的前面并打印min。下一行我从min + 2开始,依此类推,直到我从范围内的每个数字开始重复此操作。很难解释,这里有两个例子:假设我将1和5作为min和max参数传递。我希望方法打印出来:
12345
23451
34512
45123
51234
或者如果3和9通过,我希望如此:
3456789
4567893
5678934
6789345
7893456
8934567
9345678
我已经尝试了各种各样的事情,我确信有一种简单的方法可以做到这一点,我没有意识到。我应该在没有数组或数组列表的情况下执行此操作。我认为我有一个很好的合作基础,但我无法弄清楚从哪里开始。我的基本代码打印出来:
12345
2345
345
45
5
而且:
3456789
456789
56789
6789
789
89
9
我很难过。这是我的代码:
public void printSquare(int min, int max){
for (int i=min; i<=max; i++){
for (int j=i; j<=max; j++){
System.out.print(j);
}
System.out.println();
}
}
答案 0 :(得分:3)
这是一个非常简单的实现。希望这有帮助!
int n = max-min+1;
for (int i=0 ; i<n; i++){
for (int j=0; j<n; j++)
cout<<min + (i+j)%n;
cout<<"\n";
}
输出:
min = 3 | max = 9
3456789
4567893
5678934
6789345
7893456
8934567
9345678
答案 1 :(得分:3)
这是代码..
for i = 0 to max-min
for j = 0 to max-min
print min + (i+j)%n
答案 2 :(得分:2)
您应该考虑每行需要多少个值,然后确定这些值应该是多少。如果不给你解决方案,很难让它更清晰。
告诉我们您的情况。
答案 3 :(得分:1)
彼得是对的,IMO正在以正确的方式回答家庭作业问题。你知道你想要在每一行上有多少元素,所以你需要一个外部循环来为你提供许多元素,这将阻止你获得你现在看到的级联行为。
此时你需要考虑你的内部循环,你可能会发现使用模数运算符(%)最容易。这将允许您在没有超越目标的情况下进行迭代。
你应该能够从那里弄明白,而且你自己搞算算法要比从其他人那里复制算法要好得多,至少在这个发展水平上是这样。祝你好运!
答案 4 :(得分:0)
考虑一种打印缺失数字的方法。答案如下,如果您无法想出它,您可以查看它。
这也应该打印缺少的部分:
public void printSquare(int min, int max){
for (int i=min; i<=max; i++){
for (int j=i; j<=max; j++){
System.out.print(j);
}
for (int k=0; k<i-min; k++){
System.out.print(min+k);
}
System.out.println();
}
}
答案 5 :(得分:0)
我没有运行这个,但可能会有效:
public void printSquare(int min, int max){
int dif = max - min;
for (int i=min; i<=max; i++){
for (int j=i; j <= i+dif ; j++){
int temp = j;
if ( temp > max ) temp = temp - max;
System.out.print(temp);
}
System.out.println();
}
}
答案 6 :(得分:0)
试着像这样移动一个数组:
static void Main(string[] args)
{
// this will work equally well with numbers letters or other types of characters
int[] nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
String a = "hello";
for (int i = 0; i < nums.Length; i++)
{
int j = 5;
int num = i;
while (j-- > 0)
{
if (num >= nums.Length)
{
num = 0;
}
// shift the loop
Console.Write(nums[num++]);
}
Console.WriteLine();
}
}
答案 7 :(得分:0)
public class Test1{
public void printSquare(int min, int max){
for (int i=min; i<=max; i++){
for (int j=i; j<=max; j++){
System.out.print(j);
}
for(int k= min; k<i; k++){
System.out.print(k);
}
//System.out.print(i-1);
System.out.println();
}
}
public static void main(String[] args){
Test1 t = new Test1();
t.printSquare(1,5);
}
}