質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Java

    14431questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

java:+と-を交互に二個ずつ表示する

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 487

phantom

score 1

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文の条件をどのように書けば良いか分かりません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+4

iを2で割った数の偶奇を利用すれば良いです。
int 割る int は int になりますので。(5/2 ⇒ 2)

この場合、ループはfor(int i = 0; i < val; ++i)で行うと良いでしょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/27 16:56

    なぜマイナス...?
    思い当たる点が全くありませんので、問題点をご指摘いただけると幸いです。

    キャンセル

  • 2018/06/27 17:47

    すみません低評価押したつもりはありませんでした。高評価です!

    キャンセル

  • 2018/06/27 17:53

    phantomさんがうっかり低評価を押したわけではないようです。
    ユーザ登録していればどなたでも高/低評価可能なのです。

    マイナス自体はぜんぜん構わないのですが、理由が分からないとなんとなくもやもや。
    あれ、私間違ったこと書いちゃってるかな?と。

    キャンセル

  • 2018/06/28 22:35

    @LouiS0616さんへ
    LouiS0616さんがおっしゃっているのをまとめると以下のコードであっているでしょうか?
    回答の方は正しいうえ、コードが短く書けると思うので高評価しておきます。 (+1)
    String []text = {"+","-"};
    int val = 5;
    int num = 2;

    for(int i = 0; i < val; i++){
    System.out.print(text[(i / num) % text.length]);
    }

    キャンセル

  • 2018/06/28 22:48

    @Stars1024 さん
    回答時点では、もっと愚直な方法を考えていました。
    実装の方法は 分かりやすいもの/簡潔なもの/拡張性の高いもの などいろいろあるでしょうね。

    int width = 10;
    for(int i = 0; i < width; ++i) {
      if((i / 2) % 2 == 0) {
        System.out.print("+");
      }
      else {
        System.out.print("-");
      }
    }
    System.out.println();

    註:成形のため、全角空白を使用しています。

    キャンセル

+3

0 1 2 3 4 5 6 7 ...

0 0 1 1 0 0 1 1 ...

になるものを考えてみると‥そう、それはbit1

if ((i & 2) == 0) {
  //+
} else {
  //-
}

 個人的には

こんなのが好きです。

int val = 5;
String[] pattern= {"+", "+", "-", "-"};
for(int i = 0; i < val; i+=1) {
    System.out.print(pattern[i % pattern.length]);
}
//=> ++--+

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/27 17:50

    回答ありがとうございます。
    このような考え方もあるんですね!
    参考になります!

    キャンセル

+3

こんにちは、
既に、解決済みですが、他の書き方が思いついたのでそれを書きたいと思います。

今回は+と-を2個ずつ出力するので、まず最初に+と- 2つセットのものが何個現れるか求めます。
イメージ説明

上の図のように四角で囲んだ塊が合計で何個あるか求めましょう。
今回は計5個なので 5 / 2 の商の2が答えとなります。
(緑で囲ったところは余りです。あとで使います。)
イメージ説明

あとは、これをもとにfor文で書けばいいです。

for(int i = 0; i < val / num; i++){
   for(int j = 0; j < num; j++){
      System.out.print(text[i % text.length]);
   }
}


外側のfor文は塊の個数だけループさせています。
内側のfor文で同じ符号を2個出力しています。

このあとに、あまりの部分をfor文で出力すればいいです。

public class Main {
    public static void main(String[] args) {

        String []text = {"+","-"};
        int val = 5;
        int num = 2;
        //塊の部分
        for(int i = 0; i < val / num; i++){
            for(int j = 0; j < num; j++){
                System.out.print(text[i % text.length]);
            }
        }
        //余りの部分
        for(int i = 0; i < val % num; i++){
            System.out.print(text[(val / num) % text.length]);
        }
   }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/28 22:42

    拡張性が合って良い実装だと思います。

    キャンセル

  • 2018/06/28 22:43

    回答ありがとうございます。
    塊として考えるのは思いつきませんでした。

    キャンセル

  • 2018/06/28 22:47 編集

    LouiS0616さんへ
    ありがとうございます。

    キャンセル

  • 2018/06/28 22:53

    @phantomさんへ
    少しコードが長くなり、あまり参考にならないかもしれませんが、少しでも役に立ったら幸いです。

    キャンセル

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();
            }
        }
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    14431questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。