我正在通过初学者练习用Java编写一个小程序。我的任务是打印出(即找到算法)以下输出
XOOOOOOOOO
XXOOOOOOOO
XXXOOOOOOO
XXXXOOOOOO
XXXXXOOOOO
XXXXXXOOOO
XXXXXXXOOO
XXXXXXXXOO
XXXXXXXXXO
XXXXXXXXXX
我已经想出了如何做到这一点,但我写的代码似乎重复而乏味。如何缩短我的代码?必须有一种更简单的方法来实现这一目标吗?
这是我现在的代码;
package helloWorld;
public class HelloWorld {
public static void main(String[] args)
{
// Output
// Algorithm 1
boolean ft = true;
String s = new String();
for(int i = 0; i < 10; i++)
{
s += "X";
for(int j = 0; j < 9; j++)
{
if(i == 0)
{
s += "O";
}
if(i == 1)
{
if(ft == true)
{
s+="X";
ft = false;
}
if(j == 8)
{
continue;
}
s += "O";
}
if(i == 2)
{
if(ft == true)
{
s+= "XX";
ft = false;
}
if(j == 7)
{
break;
}
s += "O";
}
if(i == 3)
{
if(ft == true)
{
s+= "XXX";
ft = false;
}
if(j == 6)
{
break;
}
s += "O";
}
if( i == 4)
{
if(ft == true)
{
s+= "XXXX";
ft = false;
}
if(j == 5)
{
break;
}
s += "O";
}
if( i == 5)
{
if(ft == true)
{
s+= "XXXXX";
ft = false;
}
if(j == 4)
{
break;
}
s += "O";
}
if( i == 6)
{
if(ft == true)
{
s+= "XXXXXX";
ft = false;
}
if(j == 3)
{
break;
}
s += "O";
}
if( i == 7)
{
if(ft == true)
{
s+= "XXXXXXX";
ft = false;
}
if(j == 2)
{
break;
}
s += "O";
}
if( i == 8)
{
if(ft == true)
{
s+= "XXXXXXXX";
ft = false;
}
if(j == 1)
{
break;
}
s += "O";
}
if( i == 9)
{
if(ft == true)
{
s+= "XXXXXXXXX";
ft = false;
}
if(j == 0)
{
break;
}
s += "O";
}
}
System.out.println(s);
s = "";
ft = true;
}
}
}
答案 0 :(得分:5)
只需使用2个嵌套循环:
{{1}}
答案 1 :(得分:0)
只需创建一个循环,指示您希望拥有多少行。
在此循环中,您可以再嵌套两个循环,一个循环打印所有X
,一个打印所有O
。
public static void main(String[] args) {
print(10);
}
private static void print(int length) {
// Print until length
for (int i = 0;i<length;++i) {
for (int j = 0;j<=i;++j) {
// Write all the necessary X. Don´t print a carriage return
System.out.print("X");
}
for (int j = i+1;j<length;++j) {
// Write all the necessary O. Don´t print a carriage return
System.out.print("O");
}
// Start a new line
System.out.println();
}
}
答案 2 :(得分:0)
您可以尝试以下代码。在您的代码中,如果要求更改为100 * 100平方或更大,我无法想象您将如何做到这一点。
public class HelloWorld {
public static void main(String args[]){
int size = 10;
for(int i = 0; i < size; i++){
int number_X = i;
do{
System.out.print("X");
number_X--;
}while(number_X >= 0);
int number_O = size - i - 1;
while(number_O > 0){
System.out.print("O");
number_O--;
}
System.out.println();
}
}
}
答案 3 :(得分:0)
使用commons-lang3的其他简短版本:
public static void main(String[] args) {
// Algorithm 1
String o = null;
for (int i = 0; i < 10; i++) {
String x = StringUtils.repeat("X", i+1);
o =StringUtils.repeat("0", 9-i);
System.out.println(x+o);
}
}