我需要编写一个名为printOnLines()
的方法,它接受一个整数n和一个整数inLine的两个参数,并在一行上每隔inLine
打印一个n整数。
for n = 10, inLine = 3:
1, 2, 3
4, 5, 6
7, 8, 9
10
我的电话是(10,3)
。这是我的代码:
public static void printOnLines(int n, int s) {
for(int i=1; i<=s; i++) {
for(int j=1; j<=n-1; j++) {
System.out.print(j + ", ");
}
System.out.println();
}
}
}
我认为有两个错误:
答案 0 :(得分:0)
使用此:
public static void printOnLines(int n, int s){
StringBuilder builder = new StringBuilder();
for(int i = 1; i <= n; i++){
builder.append(i);
if(i % s == 0)builder.append("\n");
else builder.append(", ");
}
System.out.println(builder.toString().substring(0,builder.toString().length() - 2));
}
答案 1 :(得分:0)
我不会发布完整的解决方案,因为这显然是家庭作业。但如果不允许我使用if
语句或三元运算符,我会做的就是这样做。
s
,而不是1(所以在你的例子中它会变为0,3,6,9)。修改强>
好的,在@ localhost的请求中,这是我的解决方案。
public static void printOnLines(int n, int s) {
for (int i = 0; i < n; i += s) {
int j;
for (j = 1; j < s && i + j < n; j++) {
System.out.print(i + j + ", ");
}
System.out.println(i + j);
}
}
答案 2 :(得分:0)
我认为你已经提交了你的作业,所以我的方法就是这样:
class printonlines {
public static void main(String[] args) {
printOnLines(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
}
public static void printOnLines(int n, int s) {
for(int i=1; i<=n; i++) { // do this loop n times
if ( (i != 1) && (i-1)%s == 0 ) { // if i is exactly divisible by s, but not the first time
System.out.println(); // print a new line
}
System.out.print(i);
if (i != n) { // don't print the comma on the last one
System.out.print(", ");
}
}
}
}
哦,你不想使用任何if
语句。所有你真正学到的东西&#34;技巧&#34;就像你被要求做的是一个单一的技巧,而不是如何易于理解(即使你自己必须在以后调试时)代码。
无论如何,根据@DavidWallace的答案,我的不太容易理解但是更难以使用if
的代码。我确信有人可以做得更整洁,但这是我能在15分钟内做到的最好的事情......
class printonlineswithnoifs {
public static void main(String[] args) {
printOnLines(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
}
// i 012012012
// j 000333666
// i+j 012345678
public static void printOnLines(int n, int s) {
int i = 0;
int j = 1;
for (; j <= n; j+=s) {
for (; i < (s-1) && (j+i)<n; i++) {
System.out.print((i+j) + ", ");
}
System.out.println(i+j);
i=0;
}
}
}
答案 3 :(得分:-2)
以下是您想要的代码示例..
public static void printOnLines(int n, int s) {
for (int i = 1; i < n; i++) {
System.out.print(i + ",\t");
if (i % 3 == 0) System.out.println();
}
System.out.println(n);
}