gpt4 book ai didi

java - 有比我的方法更好的方法吗?

转载 作者:行者123 更新时间:2023-12-01 13:47:24 25 4
gpt4 key购买 nike

我在面试时被问到以下问题。我被要求使用 * 字符进行某种形式的“填充打印”。这是我作为答案提供的代码(用 java 编写):

编辑:

类似这样的内容:用户输入 3:

x x x x x
x * * * x
x * * * x
x * * * x
x x x x x>


public class asterisk {

public static void main (String args[]){
int input,ast;
Scanner scan = new Scanner(System.in);

System.out.println("Enter number: ");
input = scan.nextInt();


if(input>0) {
topBottom(input);
for(int x=1; x<=input; x++){
System.out.print("x ");
for( ast=1; ast<=input; ast++) {
System.out.print("* ");

}
System.out.print("x ");
System.out.println();
}
topBottom(input);
} else {
System.out.print("x ");
}
}

public static void topBottom(int input) {
for(int top = 1; top<=input+2; top++ ) {
System.out.print("x ");
}
System.out.println();
}

}

除了我的方法之外,还有更好更有效的方法吗?另外,我的代码哪里做得不好?

这对我来说真的意义重大。我现在正在练习常见的面试编码问题。

最佳答案

您的代码很好,但有一些建议。按照惯例,方法应该以动词开头。 topBottom 函数的使用是有问题的。我发现它让代码变得更加困惑。考虑可读性和效率。

这样的方法更容易阅读,并且不包含额外的方法。

对于 n+2 行中的 n+2 个字符

for(int i=0; i<input+2; i++) {
for(int j=0; j<input+2; j++) {

始终为第一行和最后一行打印 X

    if(i == 0 || i == input+1) {
System.out.print("X ");
}

对于所有其他行,为第一个和最后一个字符打印 X,否则打印 *

    else {
if(j == 0 || j == input+1) {
System.out.print("X ");
} else {
System.out.print("* ");
}
}

最终结果:

for(int i=0; i<input+2; i++) {
for(int j=0; j<input+2; j++) {
if(i == 0 || i == input+1) {
System.out.print("X ");
} else {
if(j == 0 || j == input+1) {
System.out.print("X ");
} else {
System.out.print("* ");
}
}
}
System.out.println();
}

关于java - 有比我的方法更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com