javaの問題で分からないものがあります。
以下問題文です。
変数valにキーボードから整数を入力し、実行結果のとおり「+」を2個と「-」を2個を交互に使って長さvalの直線を表示するプログラムを作成しなさい。
入力値
・5
実行結果
長さ:5
++--+
+と-を交互に出すには偶数と奇数で判定すれば良いと分かるのですが、二個ずつとなると分かりません。
int i, val;
System.out.print("長さ:");
val = Integer.parseInt(br.readLine());
for(i=1;i<=val;i=i+val){
if(
このように書いたのですが、if文の条件をどのように書けば良いか分かりません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
iを2で割った数の偶奇を利用すれば良いです。
int 割る int は int になりますので。(5/2 ⇒ 2)
この場合、ループはfor(int i = 0; i < val; ++i)
で行うと良いでしょう。
投稿2018/06/26 17:17
編集2018/06/26 17:20総合スコア35660
0
こんにちは、
既に、解決済みですが、他の書き方が思いついたのでそれを書きたいと思います。
今回は+と-を2個ずつ出力するので、まず最初に+と- 2つセットのものが何個現れるか求めます。
上の図のように四角で囲んだ塊が合計で何個あるか求めましょう。
今回は計5個なので 5 / 2 の商の2が答えとなります。
(緑で囲ったところは余りです。あとで使います。)
あとは、これをもとにfor文で書けばいいです。
java
1for(int i = 0; i < val / num; i++){ 2 for(int j = 0; j < num; j++){ 3 System.out.print(text[i % text.length]); 4 } 5}
外側のfor文は塊の個数だけループさせています。
内側のfor文で同じ符号を2個出力しています。
このあとに、あまりの部分をfor文で出力すればいいです。
java
1public class Main { 2 public static void main(String[] args) { 3 4 String []text = {"+","-"}; 5 int val = 5; 6 int num = 2; 7 //塊の部分 8 for(int i = 0; i < val / num; i++){ 9 for(int j = 0; j < num; j++){ 10 System.out.print(text[i % text.length]); 11 } 12 } 13 //余りの部分 14 for(int i = 0; i < val % num; i++){ 15 System.out.print(text[(val / num) % text.length]); 16 } 17 } 18}
投稿2018/06/28 13:25
編集2018/06/28 13:37退会済みユーザー
総合スコア0
0
0 1 2 3 4 5 6 7 ...
が
0 0 1 1 0 0 1 1 ...
になるものを考えてみると‥そう、それはbit1
!
java
1if ((i & 2) == 0) { 2 //+ 3} else { 4 //- 5}
個人的には
こんなのが好きです。
java
1int val = 5; 2String[] pattern= {"+", "+", "-", "-"}; 3for(int i = 0; i < val; i+=1) { 4 System.out.print(pattern[i % pattern.length]); 5} 6//=> ++--+
投稿2018/06/27 08:35
総合スコア16731
0
とりあえずネタ。
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { try (Scanner sc = new Scanner(System.in)) { while (sc.hasNextInt()) { int x = sc.nextInt(); for (int i = 0; i < x; i++) { System.out.print(i % 4 < 2 ? "+" : "-"); } System.out.println(); } } } }
投稿2018/06/28 14:00
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/27 07:56
2018/06/27 08:47
2018/06/27 08:53
退会済みユーザー
2018/06/28 13:35
2018/06/28 13:48