英文:
Print out an ASCII star in java
问题
以下是您提供的代码的翻译部分:
public class asciistar {
public static void main(String[] args) {
final int X = 9;
for (int R = 0; R < X; R++) {
for (int V = 0; V < X; V++) {
if (R == V || R + V == X - 1 || V == X / 2 || R == X / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
}
}
}
英文:
I am trying to print out the image below using a for
loop. I am using for
loops and if
statements to create an ASCII star in Java.
My code:
public class asciistar {
public static void main(String[] args) {
final int X = 9;
for (int R = 0; R < X; R++) {
for (int V = 0; V < X; V++) {
if (R == V || R + V == X - 1 || V == X / 2 || R == X / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
}
}
}
答案1
得分: 2
你从不输入新行。您应在外部循环中插入一个新行:
System.out.print("\n");
英文:
You never enter a new line. You should insert a new line in the outter loop:
System.out.print("\n");
答案2
得分: 2
Your code works! Just add the printing of a newline at the end of the outer loop:
public static void main(String[] args) {
final int X = 9;
for (int R = 0; R < X; R++) {
for (int V = 0; V < X; V++) {
if (R == V || R + V == X - 1 || V == X / 2 || R == X / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
}
Result:
* * *
* * *
* * *
* * *
* * * * * * * * *
* * *
* * *
* * *
* * *
英文:
Your code works! Just add the printing of a newline at the end of the outer loop:
public static void main(String[] args) {
final int X = 9;
for (int R = 0; R < X; R++) {
for (int V = 0; V < X; V++) {
if (R == V || R + V == X - 1 || V == X / 2 || R == X / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
}
Result:
* * *
* * *
* * *
* * *
* * * * * * * * *
* * *
* * *
* * *
* * *
答案3
得分: 1
public Cheater()
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
String path = "https://i.stack.imgur.com/xUAW1.png";
URL url = new URL(path);
BufferedImage image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200, 200);
f.setVisible(true);
} catch (Exception exp) { exp.printStackTrace();}
}
});
}
输出:
4K,几乎像一张图片
嘿,Java里还是一个ASCII星星:D
英文:
public Cheater()
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
String path = "https://i.stack.imgur.com/xUAW1.png";
URL url = new URL(path);
BufferedImage image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200, 200);
f.setVisible(true);
} catch (Exception exp) { exp.printStackTrace();}
}
});
}
Output:
4K, Almost seems like a pic
hey, still an ASCII star in java : D
答案4
得分: 0
在“V” for循环之后并且在“R” for循环内部,添加一个打印语句以打印出每一行:
System.out.println();
英文:
After the "V" for loop and inside the "R" for loop, add a print line statement to print out each line:
System.out.println();
答案5
得分: 0
你可以使用 一个流中嵌套另一个流 来代替 一个循环中嵌套另一个循环,代码如下:
int m = 9;
IntStream.range(0, m).forEach(i -> {
IntStream.range(0, m).forEach(j -> {
if (i == j || i + j == m - 1 || i == m / 2 || j == m / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
});
System.out.println();
});
输出结果:
* * *
* * *
* * *
* * *
* * * * * * * * *
* * *
* * *
* * *
* * *
英文:
You can use a stream in a stream instead of a loop in a loop as follows:
int m = 9;
IntStream.range(0, m).forEach(i -> {
IntStream.range(0, m).forEach(j -> {
if (i == j || i + j == m - 1 || i == m / 2 || j == m / 2) {
System.out.print("* ");
} else {
System.out.print(" ");
}
});
System.out.println();
});
Output:
* * *
* * *
* * *
* * *
* * * * * * * * *
* * *
* * *
* * *
* * *
答案6
得分: 0
你可以将这颗星星*视为平面上的原点,并在从 -n
到 n
的范围内进行迭代,以简化你的代码。
int m = 5;
IntStream.rangeClosed(-m, m)
.map(Math::abs)
.peek(i -> IntStream.rangeClosed(-m, m)
.map(Math::abs)
.mapToObj(j -> i == 0 || j == 0
|| i == j ? "* " : " ")
.forEach(System.out::print))
.forEach(i -> System.out.println());
输出:
* * *
* * *
* * *
* * *
* * *
* * * * * * * * * * *
* * *
* * *
* * *
* * *
* * *
另请参阅:使用 Java 制作一个星号沙漏
英文:
You can visualize the star as the origin on a plane and iterate from -n
to n
to simplify your code.
int m = 5;
IntStream.rangeClosed(-m, m)
.map(Math::abs)
.peek(i -> IntStream.rangeClosed(-m, m)
.map(Math::abs)
.mapToObj(j -> i == 0 || j == 0
|| i == j ? "* " : " ")
.forEach(System.out::print))
.forEach(i -> System.out.println());
Output:
* * *
* * *
* * *
* * *
* * *
* * * * * * * * * * *
* * *
* * *
* * *
* * *
* * *
<sup>See also: Making an hourglass using asterisks in java</sup>
1: https://tio.run/##lVA9T8MwFNzzK54yOYhYXVhSBQbEwFB1KBtieElMatdfil8qIdrfHtzQBIaC4CTLT/fu3kmncI@588KqZjcM0njXEahI8p6k5oE6gYY/WtqM0zJJfF9pWUOtMQRYobTwnkDEmQ@EFL@9kw2YuGXRKG37/ALYtSE7i0@QlsBACTfLmZpzeIe2FffaBdGw3FyDyWbRBG7QsxXStiiwChf2Xogdk5Df/u/uX@9/1z25daWYOmVJKEtYwOEAapx@9E2IytGj4A7SK0ihiA/SXwJfXfeA9ZZt3gIJw11PReFjy5RdaGESj0V8Ofho0JZl2Wf/x@Q4DB8 "Java (OpenJDK 8) – Try It Online"
2: https://stackoverflow.com/a/66790387/15402945 "Making an hourglass using asterisks in java"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论