英文:
How to Reverse an Int with For Loops
问题
我在反转这段代码时遇到了问题。我正在尝试实现以下内容:
目前我已经有了以下代码,但是我似乎无法理解第三个for循环应该是怎么样的。
public static void main(String[] args) {
Scanner input = new Scanner(System.in); //获取用户输入
int rows;
int number = 0;
int i = 0;
rows = input.nextInt(); //从控制台获取用户输入
while (rows <= 0) {
System.out.println("INVALID");
rows = input.nextInt();
}
for (int c = 1; c <= rows; c++) {
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number + " ");
//number--;
}
System.out.println();
}
}
英文:
i am having trouble with reversing this code. what i am trying to have as
this is what i have so far but i can't seem to wrap my head around how the third for loop is supposed to be
public static void main(String[] args) {
Scanner input = new Scanner(System.in); //gets the users input
int rows;
int number = 0;
int i = 0;
rows = input.nextInt(); //takes the users input from console
while (rows <= 0) {
System.out.println("INVALID");
rows = input.nextInt();
}
for (int c = 1; c <= rows; c++) {
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number + " ");
//number--;
}
System.out.println();
}
答案1
得分: 1
在运行最后一个循环之前,您应该将 number
存储在某个临时变量中:
int temp = number;
for(i = 0; i < c; i++) {
System.out.print(temp-- + " ");
}
英文:
Before running your last loop you should store number
in some temp variable:
int temp = number;
for(i = 0; i < c; i++) {
System.out.print(temp-- + " ");
}
答案2
得分: 1
正如我在评论中所说,你需要将 number
减少,但同时需要跟踪每行中的最高值,以便在下一次迭代中将其用作起始值。类似以下的代码应该可以工作:
public static void main(String[] args) {
int rows;
int number = 0;
int highestValue = 0;
int i = 0;
rows = 5;
for (int c = 1; c <= rows; c++) {
number = highestValue; // 将 number 重置为上一行中的最高值
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
highestValue = number; // 设置本行中的最高值
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number-- + " "); // 减少 number
}
System.out.println();
}
}
英文:
As I said in the comment, you need to decrement the number
but at the same time need to keep track of the highest values in a line to use it as a starting value in the next iteration. Something like this should work:
public static void main(String[] args) {
int rows;
int number = 0;
int highestValue = 0;
int i = 0;
rows = 5;
for (int c = 1; c <= rows; c++) {
number = highestValue; // reset number to the highest value from previous line
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
highestValue = number; // setting the highest value in line
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number-- + " "); // decrementing
}
System.out.println();
}
答案3
得分: 0
你是否必须自己实现这个,否则有大量处理数组的库。
你需要执行以下步骤:
- 找到一种方法以单行方式读取输入(整数),并将它们存储在某种容器中(可以是数组或列表)。
- 你可能需要分隔出单个整数(例如,"1 2 3" 是 3 个整数,你希望将它们反转,而 "12 3" 只有 2 个整数,你只希望反转 2)。
- 你需要确保你的输入有效(例如,用户可能输入 "1 a b c")。
- 你需要翻转容器内的整数,或者更好的方法是将原始容器以相反顺序复制。为此,你只需要遍历容器的元素,并将它们以相反顺序添加到目标容器中。
for (Integer in : inputList) {
outputList.addFirst(in);
}
如果你只想打印这些整数,无需将它们存储在列表中,你可以直接按相反顺序遍历容器。
英文:
Do you have to implement this yourself, because otherwise there are tons of libraries handling arrays.
The steps you have to take are:
- Find a way to read the input (integers) in a single line and store them in some kind of container (either an array, or a list).
- You may have to isolate what a single integer is (e.g. "1 2 3" is 3 integers, which you want to reverse, while "12 3" is just 2, and you only want to reverse 2).
- You need to ensure that your input is valid (e.g. a user may enter "1 a b c")
- You need to flip the integers within the container or better copy the original container in reverse order. For this, you only need to iterate over the container's elements and add them to the target container in reverse order
for (Integer in : inputList) {
outputList.addFirst(in);
}
If you only want to print the integers, you don't have to store them in a list, you could just iterate over the container in reverse order.
答案4
得分: 0
以下是翻译好的代码部分:
public static void main( String[] args )
{
Scanner input = new Scanner(System.in); // 获取用户输入
int rows;
int number = 0;
int i = 0;
rows = input.nextInt(); // 从控制台获取用户输入
while (rows <= 0) {
System.out.println("INVALID");
rows = input.nextInt();
}
for (int c = 1; c <= rows; c++) {
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number-- + " ");
}
System.out.println();
}
}
注意:代码中的 HTML 转义字符已经被正确处理。
英文:
It seems to bit a pattern program, you can add the number--
in you sysout
public static void main( String[] args )
{
Scanner input = new Scanner(System.in); //gets the users input
int rows;
int number = 0;
int i = 0;
rows = input.nextInt(); //takes the users input from console
while (rows <= 0) {
System.out.println("INVALID");
rows = input.nextInt();
}
for (int c = 1; c <= rows; c++) {
for (i = 0; i < c; i++) {
System.out.print(++number + " ");
}
for (int j = c; j < rows; j++) {
System.out.print("* * ");
}
for(i = 0; i < c; i++) {
System.out.print(number-- + " ");
//number--;
}
System.out.println();
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论