問題は、使用している関係演算子と論理演算子にあると思います。http://www.tutorialspoint.com/java/java_basic_operators.htmで簡単な概要を確認できます。または、論理演算子の一般原則の詳細については、https ://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Logical_Operators を参照してください。
しかし、一般的に、いくつかの有用な一般情報、コードが現在行っていることの明確化、およびいくつかの提案を下部に配置しました。
OR 演算子 - ||
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) よりも 1 つ多い星を印刷することを意味します。
次の If ステートメント:
if(i != value2 || i != value && j != value2 || j != value)
System.out.print(" ");
この if ステートメントは実際には、操作の順序により常に true になります (" " を "x" に置き換えて、結果を確認してください)。ここではifステートメントは必要ないと思いますが、次のリソースを使用して、演算子の優先順位/操作の順序の要点を取得できます: http://introcs.cs.princeton.edu/java/11precedence/ . if ステートメントで演算の順序を変更することは、代数と同じで、括弧を使用することに注意してください。すなわち
(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
2 番目の if ステートメント:
if (i == 0 || i == value || i == value - value2 || i == value2)
System.out.print("*");
上記のコードは、i = 0、value、value-value2、または value2 の列全体に星を出力します。値 = 7、値 2 = 3 の例を見てみましょう
現在(そして私が 0 から 7 になることを覚えておいてください):
i == 0 grabs:
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
// * - - - - - - -
i == value grabs:
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
// - - - - - - - *
i == value - value2 (7 - 3 = 4) grabs:
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
// - - - - * - - -
i == value2 (3) grabs:
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
// - - - * - - - -
同様に、3 番目の 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(" ");
予想どおり、コードに "*" がない場合、else は " " を出力します。
いくつかの推奨事項、考え、およびリソース