预期输出如下:
1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
12345678901
123456789012
以下是我将使用的起始代码:
import java.util.Scanner;
public class Pyramid {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Type in an integer value");
Scanner in = new Scanner(System.in);
int input = in.nextInt();
String str = "";
for(int i=1;i<=input;i++){
str += i;
System.out.println(str);
}
}
}
以下是截至目前的输出。
Type in an integer value
15
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910
1234567891011
123456789101112
12345678910111213
1234567891011121314
123456789101112131415
我一直在考虑如何解决这个问题;如果我写一个If语句if(i > 9){ i = 0; }
。但那会重置我的柜台吗?
我该如何完成这项任务? 我错过了什么?
答案 0 :(得分:5)
一旦达到10,你可以使用模运算符使i
循环回0:
str += i % 10;
答案 1 :(得分:2)
您只需要使用%
模运算符,该东西就可以使用任何数字。
public static void main(String[] args) throws IOException {
System.out.println("Type in an integer value");
Scanner in = new Scanner(System.in);
int input = in.nextInt();
String str = "";
for (int i = 1; i <= input; i++) {
str += i % 10;
System.out.println(str);
}
}
答案 2 :(得分:0)
java8解决方案:
IntStream.rangeClosed(1, MAX)
.forEach(i -> IntStream.rangeClosed(1, i)
.mapToObj(j -> j == i ? j % 10 + "\n" : j % 10 + " ")
.forEach(System.out::print)
);
答案 3 :(得分:-1)
public class counter1
{
public static void main(String[] args)
{// TODO Auto-generated method stub
while(true) //keep repeating code
{
System.out.println("Enter Number...");
Scanner number = new Scanner(System.in);
int repeat = number.nextInt(); //input number
int c = 1; //start counting at 1
while (c<=repeat) //count vertically if this if true
{
int a = 1; //always start each count from 1
do
{
System.out.print(a + " "); //print number and a space horizontally
a++; //increment horizontal numbers by 1
} while (a<=c); //check if the final number on horizontal line is less max, if max-exit loop
c++;
System.out.println(); //line break
}
}
}
}