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

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

ただいまの
回答率

87.61%

過去に同じ数字を入力していたら、それが分かるようにしたい

解決済

回答 5

投稿

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

score 77

java初心者です。よろしくお願いします。
過去に同じ数字を入力していたら、見てわかるようにしたいです。

import java.util.Scanner;
import java.util.ArrayList;



class Matiuke{

  public static void main(String[] args){
    Scanner stdIn = new Scanner(System.in);
    ArrayList<Integer> number = new ArrayList<Integer>();


    System.out.println("患者様の数");
    int n = stdIn.nextInt();
    int[] u = new int[n];
    int[] key = new int[n];
    int p = 0;
    int copnum = 0;

    for(int i = 0; i < n; i++){


      u[i] = stdIn.nextInt();
      copnum = u[i];
      number.add(u[i]);

      System.out.print("\n\n\n\n\n");


      if(number.contains(copnum)){
        System.out.println("aaaaaaaaaaaaaaaaaaaa");
      }

      System.out.print(number/*[q]*/ + " ");


    }

}



}

実行結果

3





aaaaaaaaaaaaaaaaaaaa
[3] 2





aaaaaaaaaaaaaaaaaaaa
[3, 2] 2





aaaaaaaaaaaaaaaaaaaa
[3, 2, 2] 2





aaaaaaaaaaaaaaaaaaaa
[3, 2, 2, 2]


ですが、このコードだと、うまくいきません。同じ数字を入力した場合にのみ、
System.out.println("aaaaaaaaaaaaaaaaaaaa");
を実行させたいです。よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • LouiS0616

    2019/03/20 18:14

    同じ原因では?
    https://teratail.com/questions/179027

    キャンセル

  • rink

    2019/03/20 18:22

    結局わからずじまいで、なかなかうまくいきませんでした。
    解答してくださった方のおっしゃっていることは理解できたのですが、うまくコードを改変させることができません…。

    キャンセル

  • shinami

    2019/03/20 20:23

    プログラムは上から流れていきます。
    まずはfor文を無くしてu[i]をu[0]にしてやってみてはどうでしょう。
    問題点を詰める時には必要最低限でも同じような事が起こるかやってみれば良いのです。

    キャンセル

  • rink

    2019/03/20 20:53

    なるほど…ひとつづつ確かめていけばわかるかもしれません。
    ありがとうございます!

    キャンセル

回答 5

+3

number に入力した値を追加( number.add(u[i]) ) した後に number の中を検査( number.contains(copnum) )すれば, '有る' のは当然かと思います.

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/20 21:08

    ご回答ありがとうございます。
    そうですよね…

    キャンセル

+1

  1. 数字を入れるListを用意しておく
  2. 数字を入力
  3. Listの最初から最後まで数値比較して同一のものがあるかをチェック
  4. 同一のものがあるなら、何やかや出力して2に戻る
  5. ない場合はその数値をListに追加して2に戻る

と、こういうコードを組んでいけばよろしいかと

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/20 21:17

    ご回答ありがとうございます。
    ③の数値比較試してみます!

    キャンセル

+1

過去入力した数字を順番通りすべて出力するというのでなければ、Setを使った方がいいです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/20 22:35

    ご回答ありがとうございます。
    将来的に、同じ数字が来たらその数字を箱から消すという動作を入れようとしていまして、Setだと勝手に無視されてしまうと思うので、自分は使わないで動かそうと思います。
    でもSet を教えてくれてありがとうございます!

    キャンセル

  • 2019/03/21 00:32

    いや普通にSetでも消せるけど…?
    「勝手に無視される」とは何のこと?

    キャンセル

  • 2019/03/21 17:20

    ご回答ありがとうございます。
    Setを使うと同じ数字が入力されたら勝手に無視されると思ってました。
    すみません…汗

    キャンセル

+1

質問文のコードを整理してみました。

import java.util.List;
import java.util.Scanner;

public class Matiuke {
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);
        List<Integer> numbers = new ArrayList<Integer>();

        System.out.println("患者様の数");
        int n = stdIn.nextInt();
        for (int i = 0; i < n; i++) {
            int copnum = stdIn.nextInt();
            if (numbers.contains(copnum)) {
                System.out.println("aaaaaaaaaaaaaaaaaaaa");
            }
            numbers.add(copnum);
            System.out.println(numbers);
        }
    }
}

実行例
イメージ説明

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/21 17:22

    ご回答ありがとうございます!
    とてもきれいで、わかりやすいコードで驚きました。
    助かります!!

    キャンセル

checkベストアンサー

0

/**
 *
 * @author xxxxx
 */
import java.util.Scanner;
//
public class JavaApplication1 {


    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //
        System.out.println("患者様の数");
        int n=scan.nextInt();
        String str =null;
        String ch;
        for( int i= 0; i < n; i++ ){
            str += scan.next();            
        }
        //
        do{
            ch = scan.next();
        }while(!str.contains(ch));
        //
        System.out.println("aaaaaaaaaaaaaaaaaaaa");

    }

}


結果

run:
患者様の数
5
a
b
n
l
m
1
2
3
4
A
B
n
aaaaaaaaaaaaaaaaaaaa

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/20 23:24

    ご回答ありがとうございます!
    こんなに簡単にできてしまうんですね…汗
    勉強になりました!!!

    キャンセル

  • 2019/03/20 23:29

    ちなみにこんなことも出来ます。必要ならみ字数制限しないと・・・
    患者様の数
    3
    123
    456
    789




    333
    444
    999
    456
    aaaaaaaaaaaaaaaaaaaa

    キャンセル

  • 2019/03/20 23:50

    asahina1979さん
    貴方の言う通りです。。でも、大きなとヒントになりましたので、とても助かりました!

    キャンセル

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

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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