我对编码很新,而且不是很擅长:(
我几个小时以来一直在努力为我的班级做一个项目,而且我几乎没有用过互联网。
我需要让它出现在我的控制台上,好像一个球来回弹跳,球弹跳的宽度由用户设定。
到目前为止,我的输出只产生一个无限的左右对角线,跨越用户选择的宽度。
到目前为止我的代码:
import java.util.Scanner;
public class Midterm1_1 {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
double yourNum;
System.out.println("How many spaces wide would you like the ball to bounce?");
yourNum= scan.nextDouble();
String ballBounce = new String ("o")
int count = 0;
while (count < 50){
System.out.println(ballBounce);
String x = " ";
for (int row = 1; row < yourNum; row++) {
System.out.println(x+"o");
x+= " ";
}
}
}
}
如何让它从右向左返回?我的假设是另一个声明。但到目前为止,我所尝试的一切都无效。
提前谢谢。
答案 0 :(得分:0)
下面的代码不一定是最短的代码,它意味着给OP提供一些想法,但不向她/他提供直接的答案。如果OP将按原样复制代码并且不适应它,那么教师应该从某个地方复制代码。如果OP了解它,将很容易清理和简化解决方案。
下面有两种方法,只有在您阅读完代码后才能选择 (还有一个我故意删除的:这是一个学习练习,所以很明显留作练习。
对于第一种方法(paintBallAt_1
),请阅读PrintStream.printf
对于第二种方法(paintBallAt_2
),请阅读String.substring
public class Midterm1_1 {
static private String ballBounce = "o";
public static void paintBallAt_1(int x) {
if(x==0) {
System.out.println("o");
}
else {
// will get your format strings as "%1$1c\n", "%1$2c\n", etc
String formatString="%1$"+x+"c\n";
System.out.printf(formatString, 'o');
}
}
// 6x20=120 spaces at max. Limit or expand them how you see fit
static public final String filler=
" "+
" "+
" "+
" "+
" "+
" "
;
static public final int MAX_BOUNCE=filler.length();
public static void paintBallAt_2(int x) {
if(x>MAX_BOUNCE) {
x=MAX_BOUNCE;
}
if(x<0) {
x=0;
}
String bounceSpace=filler.substring(0, x);
System.out.println(bounceSpace+"o");
}
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
int yourNum;
System.out.println("How many spaces wide would you like the ball to bounce?");
yourNum= scan.nextInt();
int count = 0;
while (count < 50) {
System.out.println(ballBounce);
String x = " ";
for (int row = 1; row < yourNum; row++) {
System.out.println(x+"o");
x+= " ";
}
// bounce it to the left
for (int row = yourNum-1; row >= 0; row--) {
switch(row % 2) {
case 0:
paintBallAt_1(row);
break;
default:
paintBallAt_2(row);
break;
}
}
}
}
}