如何打印java中指定的内容--->;
我想打印下面的图案如何打印java中指定的内容--->;,java,Java,我想打印下面的图案 v v v v v 下面是我尝试过的代码 public static void main(String[] args) { final int numRows = 4; for (int row = 0; row < numRows; row++) { for (int preSpace = numRows - row; preSpace >= 0; preSpace--) { System.out
v v
v v
v
下面是我尝试过的代码
public static void main(String[] args)
{
final int numRows = 4;
for (int row = 0; row < numRows; row++)
{
for (int preSpace = numRows - row; preSpace >= 0; preSpace--)
{
System.out.print(" ");
}
if (row > 0)
{
System.out.print("v");
for (int postSpace = 1; postSpace < row * 2; postSpace++)
{
System.out.print(" ");
}
}
}
System.out.println("v");
}
有人能帮我解决这个问题吗?@Tim的回答是正确的(只是他的print语句在循环之外,但在我可以编辑或评论之前,它被删除了。所以我发布了我自己的)
基本上你只需要反转你最外层的环
public static void main(String[] args) {
final int numRows = 4;
for (int row = numRows-1; row >= 0; row--) {
for (int preSpace = numRows - row; preSpace >= 0; preSpace--) {
System.out.print(" ");
}
if (row > 0) {
System.out.print("v");
for (int postSpace = 1; postSpace < row * 2; postSpace++) {
System.out.print(" ");
}
}
System.out.println("v");
}
}
publicstaticvoidmain(字符串[]args){
最终整数=4;
对于(int行=numRows-1;行>=0;行--){
对于(int-presspace=numRows-row;presspace>=0;presspace--){
系统输出打印(“”);
}
如果(行>0){
系统输出打印(“v”);
对于(int-postSpace=1;postSpace|
我会创建一个图案,这样你就可以轻松地画出你需要的任何东西
public static void main(String[] args)
{
// declare a 2D array and DRAW IT!
char[][] pattern =
{{ 'v',' ',' ',' ','v'},
{ ' ','v',' ','v',' '},
{ ' ',' ','v',' ',' '}};
for (int row = 0; row < pattern.length; row++)
{
for (int col = 0; col < pattern[0].length; col ++)
{
System.out.print(pattern[row][col]);
}
System.out.println(); // \n at the end
}
}
遵循这一原则,我会作弊并这样做:
public static void main(String[] args) {
System.out.println("v v");
System.out.println(" v v");
System.out.println(" v");
}
这可能不是练习的精神所在,但在软件开发中保持简单是一个非常重要的课程。简单、干净的代码=易于维护=更少的bug。我为您解决了它:
final StringBuilder out = new StringBuilder("");
for (int row = 1; row <= numRows; row++) {
for (int preSpace = row - 1; preSpace > 0; preSpace--) {
out.append(" ");
}
if (row < numRows) {
out.append("v");
}
if (row == numRows) {
out.append("v");
}
else {
for (int midSpace = 2 - (row-1)*2; midSpace >= 0; midSpace--) {
out.append(" ");
}
}
if (row < numRows) {
out.append("v");
}
for (int postSpace = row - 1; postSpace > 0; postSpace--) {
out.append(" ");
}
out.append(System.lineSeparator());
}
System.out.print(out.toString());
final StringBuilder out=新StringBuilder(“”);
对于(int行=1;行0;预空间--){
out.追加(“”);
}
如果(行=0;midSpace--){
out.追加(“”);
}
}
如果(行0;postSpace--){
out.追加(“”);
}
out.append(System.lineSeparator());
}
System.out.print(out.toString());
您的代码似乎不起作用,我无法重现您给出的输出。如果它能工作,你应该能够简单地反转循环的迭代顺序,一切都会好起来。我已经使用了@tim代码,它工作正常。但没有给出我所需的输出。@amitmahajan你的答案很好……可惜你把它删除了。今天看来是你的幸运日。是的,我一整天都在努力,从一个非常老的问题中减去+10点声誉点数;至最终整数numRows=3;为了得到@Chester想要的东西。认真地我想他有个问题要解决。我肯定他不想在这个问题上使用Hello World程序。不完全是严肃的,但在我的职业中,作为一名Java开发人员,我看到了无数的代码示例,这些代码比它需要的复杂得多,并且用5行长的方法替换了100行长的方法,它们做同样的事情要简单得多。因此,关于保持简单的建议是真诚的。
public static void main(String[] args) {
System.out.println("v v");
System.out.println(" v v");
System.out.println(" v");
}
final StringBuilder out = new StringBuilder("");
for (int row = 1; row <= numRows; row++) {
for (int preSpace = row - 1; preSpace > 0; preSpace--) {
out.append(" ");
}
if (row < numRows) {
out.append("v");
}
if (row == numRows) {
out.append("v");
}
else {
for (int midSpace = 2 - (row-1)*2; midSpace >= 0; midSpace--) {
out.append(" ");
}
}
if (row < numRows) {
out.append("v");
}
for (int postSpace = row - 1; postSpace > 0; postSpace--) {
out.append(" ");
}
out.append(System.lineSeparator());
}
System.out.print(out.toString());