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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

Q&A

解決済

5回答

205閲覧

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

rink

総合スコア80

Java

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

1グッド

1クリップ

投稿2019/03/20 09:07

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

java

1import java.util.Scanner; 2import java.util.ArrayList; 3 4 5 6class Matiuke{ 7 8 public static void main(String[] args){ 9 Scanner stdIn = new Scanner(System.in); 10 ArrayList<Integer> number = new ArrayList<Integer>(); 11 12 13 System.out.println("患者様の数"); 14 int n = stdIn.nextInt(); 15 int[] u = new int[n]; 16 int[] key = new int[n]; 17 int p = 0; 18 int copnum = 0; 19 20 for(int i = 0; i < n; i++){ 21 22 23 u[i] = stdIn.nextInt(); 24 copnum = u[i]; 25 number.add(u[i]); 26 27 System.out.print("\n\n\n\n\n"); 28 29 30 if(number.contains(copnum)){ 31 System.out.println("aaaaaaaaaaaaaaaaaaaa"); 32 } 33 34 System.out.print(number/*[q]*/ + " "); 35 36 37 } 38 39} 40 41 42 43} 44

実行結果

java

13 2 3 4 5 6 7aaaaaaaaaaaaaaaaaaaa 8[3] 2 9 10 11 12 13 14aaaaaaaaaaaaaaaaaaaa 15[3, 2] 2 16 17 18 19 20 21aaaaaaaaaaaaaaaaaaaa 22[3, 2, 2] 2 23 24 25 26 27 28aaaaaaaaaaaaaaaaaaaa 29[3, 2, 2, 2]

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

DrqYuto👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/03/20 09:22

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

2019/03/20 11:23

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

2019/03/20 11:53

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

回答5

0

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

投稿2019/03/20 11:12

jimbe

総合スコア12543

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/03/20 12:08

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

0

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

java

1import java.util.List; 2import java.util.Scanner; 3 4public class Matiuke { 5 public static void main(String[] args) { 6 Scanner stdIn = new Scanner(System.in); 7 List<Integer> numbers = new ArrayList<Integer>(); 8 9 System.out.println("患者様の数"); 10 int n = stdIn.nextInt(); 11 for (int i = 0; i < n; i++) { 12 int copnum = stdIn.nextInt(); 13 if (numbers.contains(copnum)) { 14 System.out.println("aaaaaaaaaaaaaaaaaaaa"); 15 } 16 numbers.add(copnum); 17 System.out.println(numbers); 18 } 19 } 20}

実行例
イメージ説明

投稿2019/03/20 22:20

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/03/21 08:22

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

0

ベストアンサー

java

1/** 2 * 3 * @author xxxxx 4 */ 5import java.util.Scanner; 6// 7public class JavaApplication1 { 8 9 10 /** 11 * @param args the command line arguments 12 */ 13 14 public static void main(String[] args) { 15 Scanner scan = new Scanner(System.in); 16 // 17 System.out.println("患者様の数"); 18 int n=scan.nextInt(); 19 String str =null; 20 String ch; 21 for( int i= 0; i < n; i++ ){ 22 str += scan.next(); 23 } 24 // 25 do{ 26 ch = scan.next(); 27 }while(!str.contains(ch)); 28 // 29 System.out.println("aaaaaaaaaaaaaaaaaaaa"); 30 31 } 32 33} 34

結果

text

1run: 2患者様の数 35 4a 5b 6n 7l 8m 91 102 113 124 13A 14B 15n 16aaaaaaaaaaaaaaaaaaaa 17

投稿2019/03/20 14:05

編集2019/03/20 14:19
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2019/03/20 14:20 編集

読み込みが抜けていたので修正しました。数字かどうかの判定は入っていません。
退会済みユーザー

退会済みユーザー

2019/03/20 14:24

同じ数字(文字)を入力したときに「 aaa.... 」を出したいって質問じゃないのこれ
rink

2019/03/20 14:24

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

2019/03/20 14:29

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

2019/03/20 14:50

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

0

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

投稿2019/03/20 13:27

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/03/20 13:35

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

2019/03/20 15:32

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

2019/03/21 08:20

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

0

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

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

投稿2019/03/20 09:36

編集2019/03/20 09:37
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rink

2019/03/20 12:17

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問