使用Java编写静态方法,利用循环返回一个字符串

3
完整的任务是:
编写两个公共类(必须命名为TextBox和TextBoxTester)。TextBox类包含以下重载的静态方法,方法名称为textBoxString。该方法返回一个字符串类型的值。
public static String textBoxString (int side)

返回的字符串值打印时会显示一条由字符组成的正方形轮廓。你可以使用任何字符。不要忘记'\n'会在返回的字符串中强制插入一个新行字符。例如,假设我想用*作为我的框中的字符:

     String s =  textBoxString(3); 

     System.out.println(s);

将打印

xxx  
x x  
xxx  

public static String textBoxString(int side, char bChar)

返回的字符串值,打印时会显示使用bChar作为框字符的边长为characters的正方形的轮廓。例如,
     String s = textBoxString(4, '+'); 

     System.out.println(s);

将打印

++++   
+  +  
+  +  
++++

好的,请提供需要翻译的内容。
public class TextBox {

    public static String textBoxString(int side) {
        int n = side;
        String string = "";
        for (int i = 0; i < n; i++) {
            if (i == 0 || i == n - 1) {
                string = "***";
            }
            else {
                string = "*    *";
            }
        }
        return string;

    }

    public static String textBoxString(int side, char bChar) {
        int n = side;
        char c = bChar;
        String string = "";
        for (int i = 0; i < n; i++) {
            if (i == 0 || i == n -1) {
                string = c + " " + c + " " + c + " " + c;
            }
            else {
                string = c + "      " + c;
            }
        }
        return string;
    }
}

我的问题是如何返回结果。我不知道如何返回我需要的结果,这个结果可以通过在主方法中运行此代码(对于第一个方法)来获得:

int n = 3;
for (int i = 0; i < n; i++) {
    if (i == 0 || i == n - 1) {
        System.out.println("***");
    }
    else {
        System.out.println("*  *");
    }
}
4个回答

1
你可以使用嵌套循环来实现这个。
public static String textBoxString(int n, char c) {
 String output = "";
 for(int i = 0; i < n; i++) { // constructing all rows
  output += c;
  for(int j = 1; j < n-1; j++) { // constructing a single row
     if(i == 0 || i == n - 1)
       output += " " + c; // use character to fill up each element in the row
     else
       output += " "; // use space to fill up
  }
  output += " " + c +"\n";
 }
return output;
}

运行并打印

x x x x x
x       x
x       x
x       x
x x x x x

0
public static String textBoxString(int side) {
        int n = side;
        String string = "";
        for (int i = 0; i < n; i++) {
            if (i == 0 || i == n - 1) {

                for (int j = 0; j < n; j++) {
                    string += "*";
                }
                string += "\n";
            } else {
                string += "*";
                for (int j = 1; j < n - 1; j++) {

                    string += " ";
                }

                string += "*\n";
            }
        }
        return string;

    }

1
不要只是把一堆代码扔给提问者,你可能需要澄清他/她可以改进的地方。这个答案没有解释任何东西。 - SurfMan

0
欢迎来到StackOverflow!
为了让textBoxString适用于不同的side值,你不能使用硬编码的字符串"***",因为那只有在side等于3时才有效。
你需要使用嵌套循环来实现这个目标。
我不会为你写完整的代码,但我会给你一个提示。
if (i == 0 || i == n - 1) {
    // Use a for loop here to construct the top and bottom rows
}
else {
    string = "*    *";
}

非常感谢您! - user13735919
你犯了和 Derek Yang 一样的错误。空格数量应该取决于 int side 而你使用了一个固定数量(4)空格的 * * - Arvind Kumar Avinash
他只是暗示了第一行。string="* *";被复制了。这只是一个提示。如果他也修复了它,那就是一个解决方案。 - Koos Gadellaa

0
你可以在字符串中添加“\n”,它会开始一个新的行。
for (int i = 0; i < n; i++) {
        if (i == 0 || i == n -1) {
            string += c + " " + c + " " + c + " " + c + "\n";
        }
        else {
            string += c + "      " + c + "\n";
        }
    }
}

在添加了这个之后,返回字符串。

哇,我也完全忘记了 +=。谢谢! - user13735919
这不是正确的方法。它总是会打印固定数量的空格。空格数应该取决于int side - Arvind Kumar Avinash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接