我认为您的问题在于您使用的关系和逻辑运算符。您将在此处获得简要概述:http ://www.tutorialspoint.com/java/java_basic_operators.htm 。或者更详细地了解逻辑运算符的一般原则:https ://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Logical_Operators
但总的来说,我在下面放置了一些有用的一般信息,澄清了您的代码现在正在做什么,并在底部放置了一些建议。
或运算符 - ||
TRUE || TRUE = TRUE
TRUE || FALSE = TRUE
FALSE || TRUE = TRUE
FALSE || FALSE = FALSE
AND 运算符 - &&
TRUE && TRUE = TRUE
TRUE && FALSE = FALSE
FALSE && TRUE = FALSE
FALSE && FALSE = FALSE
关系运算符
== //Specific Equality (A == B = TRUE iff A has the same value as B)
<, > //Less Than / Greater Than (A < B or A > B -- excludes B)
<=, >= //Less Than / Greater Than *or Equal To* (A <= B or A >= B -- inclusive of B)
!= //Specific Inequality
鉴于上述情况,从你的问题我认为你有这个
你想要这样的东西
当前代码:
如果这是关于它的要点,我建议再看看你正在使用的逻辑。我将在这里做的是澄清您拥有的代码,并希望您可以利用这些信息进行相应的故障排除:
首先让我们看看你的 for 循环:
for (int i = 0; i <= value; i++) {
for (int j = 0; j <= value; j++) {
目前,您正在使用从 0 到输入值的 for 循环,包括. 这意味着打印的星星实际上比输入的数字(0, 1, 2 .. value-1, value)多打印一颗星
接下来是您的 If 语句:
if(i != value2 || i != value && j != value2 || j != value)
System.out.print(" ");
由于操作顺序,这个 if 语句实际上最终总是为真(将“”替换为“x”并查看结果)。我认为这里不需要 if 语句,但您可以使用以下资源来获取运算符优先级/操作顺序的要点:http: //introcs.cs.princeton.edu/java/11precedence/。请注意,更改 if 语句中的操作顺序与代数中的操作顺序相同——使用括号。IE
(Order of Operations: Left to Right)
False || True && True && True
=> True && True && True
=> True && True
=> True
(False || True) && (True && False)
=> (True) && (True && False)
=> (True) && (False)
=> False
您的第二个 if 语句:
if (i == 0 || i == value || i == value - value2 || i == value2)
System.out.print("*");
上面的代码为 i = 0、value、value-value2 或 value2 的整个列打印一个星号。我们以 value = 7, value2 = 3 为例
目前(记住 i 从 0 到 7):
i == 0 grabs:
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
i == value grabs:
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
i == value - value2 (7 - 3 = 4) grabs:
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
i == value2 (3) grabs:
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
同样,看看你的第三个 if 语句:
else if (j == 0 || j == value || j == value - value2 || j == value2)
System.out.print("*");
目前:
j == 0 grabs:
// * * * * * * * *
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
j == value grabs:
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// * * * * * * * *
j == value - value2 (7 - 3 = 4) grabs:
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// * * * * * * * *
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
and j == value2 (3) grabs:
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// * * * * * * * *
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
// - - - - - - - -
最后:
else
System.out.print(" ");
正如预期的那样,如果您的代码没有写下“*”,那么这会打印一个“”。
一些建议、想法和资源