我目前正在参加一个简介Java课程,以便在编程方面让我的脚步湿润。作为我的任务之一,我被指示使用方法,参数和for循环构建机器人角色。
我无法让我的参数正确循环它们应该如何。我不确定我做错了什么。
我有什么:
public class Assignment3 {
public static void main(String[] args) {
head();
neck(2);
rectangleBody(9,10);
legs(6);
feet();
}
public static void feet() {
System.out.println("===== =====");
}
public static void legs(int i) {
System.out.println(" | | | |");
}
public static void rectangleBody(int i, int j) {
for (i=1;i<=9;i++);
for (j=1;i<=10;i++);
System.out.println("#");
}
public static void neck(int i) {
System.out.println(" | |");
}
public static void head() {
System.out.println(".---------.");
System.out.println("| O O |");
System.out.println("| < |");
System.out.println("| --- |");
System.out.println("._________.");
}}
正如你所看到的,我需要我的颈部,矩形和腿部方法重复我在参数中设置的次数。
当我运行时,我只获得打印行但没有循环:
.---------.
| O O |
| < |
| --- |
._________.
| |
#
| | | |
===== =====
任何帮助将不胜感激!
答案 0 :(得分:3)
您正确地将参数传递给 rectangleBody(int i,int j)方法,但是在方法定义中,您没有正确使用for循环。你的for循环都没有做任何事情,因为你通过在它们旁边加一个分号来终止它们。而是嵌套for循环(一个在另一个内)并打印# 试试这段代码:
public class Assignment3 {
public static void main(String[] args) {
head();
neck(2);
rectangleBody(9,10);
legs(6);
feet();
}
public static void feet() {
System.out.println("===== =====");
}
public static void legs(int i) {
System.out.println(" | | | |");
}
public static void rectangleBody(int i, int j) {
for (i=1;i<=9;i++)
{
for (j=1;i<=10;i++)
{
System.out.println("#############"); //Nest the for loop and then print #
}
}
}
public static void neck(int i) {
System.out.println(" | |");
}
public static void head() {
System.out.println(".---------.");
System.out.println("| O O |");
System.out.println("| < |");
System.out.println("| --- |");
System.out.println("._________.");
}
}
答案 1 :(得分:1)
在rectangleBody方法中,你的索引变量应该是不同的;第一个循环使用'i',而第二个循环使用'j'和'i'。此外,你的循环用半冒号关闭:通过添加大括号'{}'给它们一个身体 试试这个:
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 10; j++) {
System.out.println("#");
}
}
您还需要在方法腿,颈部等中添加forloops以重复System.out.print命令。
答案 2 :(得分:1)
您的for loop
对于rectangleBody方法不正确。首先,您在一个循环中使用i
两次而不是i
,而在下一个循环中使用j
。其次,你不应该传递参数。您的循环将分别在i=9
和j=10
时停止。
这段代码应该给你一个良好的开端:
public static void rectangleBody() {
for (i = 1; i <= 9; i++) {
System.out.print("#");
}
for (j = 1; j <= 10; j++) {
System.out.println("#");
}
}
答案 3 :(得分:1)
public static void rectangleBody(int i, int j) {
for (i=1;i<=9;i++);
for (j=1;i<=10;i++);
System.out.println("#");
}
这个方法应该是这样的:
// this line called 'comment'. text starting with '//' is for humans, not computers!
public static void rectangleBody(int width, int height) { // names should be explaining what it does
for (int i=0; i<height; i++) { // create variable 'i' only used within foor loop
for (int j=1; j<width; j++) { // use j here, not i!
System.out.print("#"); // 'print' method don't change line after print
}
System.out.println(); // change line after one line of body drew
}
}
答案 4 :(得分:0)
试试这个:
public static void rectangleBody(int i, int j) {
for (int x=1; x<=i; x++) {
for (int y=1; y<=j; y++) {
System.out.print("#");
}
System.out.println("");
}
}
答案 5 :(得分:0)
public static void rectangleBody(int i, int j) {
for (i=1;i<=9;i++);
for (j=1;i<=10;i++);
System.out.println("#");
}
如果您的{}
没有使用任何大括号for
,那么只会循环下一个语句。您必须在for
之后删除分号,因为您当前正在循环一个空语句(;
)。为了避免麻烦,我建议使用行缩进精确准确。
没错,但是如果你只是想做X次的事情,那么我会这样写:for (int i = 0; i < X; i++)
因为这就是你如何循环数组以及你的眼睛应该习惯的东西很快,在Java中,大多数东西都有一个基于0的索引。
字符串始终在左侧开始打印。它需要填充(前面的空格),也许你甚至想把它限制为只有奇数,所以看起来并不难看。
println()
添加换行符\n
,因此您始终只打印一个字符,还有一个print()
方法。但由于您拥有结构良好的数据,因此无需逐个打印字符。
如果你把所有这些放在一起,你最终会得到这样的结果:
public static final int headWidth = 11; // constant
public static final rectangleBody(int x, int y) {
// fix x if out of range or even
if (x > headWidth)
x = headWidth;
else if (x < 1)
x = 1;
else if (x % 2 == 0) // % = modulo ==> it is an even number
x--;
// calculate padding
int pad = (headWidth - x) / 2; // divide by 2, because only need to pad left
// create a line of the body
String line = "";
for (int i = 0; i < pad; i++)
line += " ";
for (int i = 0; i < x; i++)
line += "#";
//print y lines
for (int i = 0; i < y; i++)
System.out.println(line);
}