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

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

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

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

解決済

他クラスで作成したMapを使用したい

hiyori_
hiyori_

総合スコア3

Java

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

1回答

0評価

1クリップ

206閲覧

投稿2022/05/18 12:49

編集2022/05/23 12:14

簡易的なチャットシステムを作成したいです。
ログインしたらその人が作成したチャンネルとチャットが表示される、discordに近いものにしたいです。

ユーザー→名前(name)、パス(pass)、チャンネルリスト(Map<String,List>data)
チャンネル→チャンネルの名前、チャット
を持たせればよいと考えたのですが、Channelクラスで作ったリストをUserクラスにどのように渡したらいいかわかりません。また、順序関係的にまずユーザーが作成されてその後チャンネルを追加していく形になるのですが、上記のような構造でも問題はないでしょうか?

つたない文章で申し訳ないです。java初心者なのですが現状できる最大限のことをしたつもりです。迷走してしまって拙い箇所多々あると思いますが、ご教授いただけますと幸いです。
よろしくお願いいたします。

該当のソースコード

java

//User.java @Controller public class User {//ユーザを登録する String name;//登録する名前 String pass;//登録するパス String loginName;//ログインの時に入力した名前 String loginPass;//ログインの時に入力したパス String returnPass;//HashMapから返されたパスを格納するところ Map<String,String> users = new HashMap<>(); Map<String,Map>data = new HashMap<>();//ユーザーとチャンネルマップを結びつけるところ User(String name,String pass,Map data){ this.name = name; this.pass = pass; this.data = data; } @RequestMapping("/addUser") public String addUser(@RequestParam("name")String name, @RequestParam("pass")String pass){ users.put(name,pass); return "login.html"; } public String getName(){ return name; } public String getPass(String a){//名前を入力してマップからパスを返してもらう return users.get(a); } public void loginUser(String loginName,String loginPass){//ログイン情報が入る this.loginName = loginName; this.loginPass = loginPass; } //ログイン処理 }

java

//Channel.java public class Channel{ String channelName;//チャンネルの名前 String checkName;//チャンネルの名前が存在するかMapを調査するため Boolean check;//あるかないかの判定 List<String>chats = new ArrayList();//チャットのリスト Map<String,List>channel = new HashMap<>();//チャンネルのマップ Stringはチャンネル名、Listはチャット →こことUserを関連させたい public Channel(String channelName,List<String>chats){ this.channelName = channelName; this.chats = chats; channel.put(channelName,chats);//チャンネルに名前とチャットを入れる } @RequestMapping(value = "/create") public String addChannel(@RequestParam("channelName") String channelName){//チャンネルを新しく追加する channel.put(channelName,chats); //data.put(User.getName(), (Channel) channel); return "Chat.html"; } @RequestMapping(value = "/serect") public void showing(@RequestParam("checkName") String checkName){//チャンネルが既にあるかどうかを確かめるところ check = channel.containsKey(checkName); if(check = true){ System.out.println("チャンネルを選択"); channel.get(checkName);//チャンネルにあるリストを返す }else if(check = false){ System.out.println("チャンネルを作成"); channel.put(channelName,chats);//チャンネル一覧に入れる }else{ System.out.println("エラー"); } } public Map getMap(){ return channel; } public String getChannelName(){ return channelName; } }

java

//chat @Controller public class Chat { private List<String> chats = new ArrayList(); String logName; String chatlog(Model model) { //追加処理 } @RequestMapping(value="/addchat") String addChat(@RequestParam("name") String name, @RequestParam("chat") String chat) { //追加処理 } void addChat(String name,String chat, Channel channel) { var nowChat = channel.chats; if (!chat.isBlank()) { nowChat.add(name + ":" + chat); } }

java

public class ChatApplication { public static void main(String[] args) { SpringApplication.run(ChatApplication.class, args); } }

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

jimbe

2022/05/18 13:27 編集

なぜ channnel.java や main メソッドのコードがクラスのテイを成していないのでしょうか。 また、 アノテーションが付いていますが、何でしょうか。
hiyori_

2022/05/18 13:39

channel,mainは両方ともこちらに記載する際に落ちてしまったようです。ご指摘ありがとうございます、修正します。 アノテーションはhtmlと結合させるためにつけています。
jimbe

2022/05/18 13:52

修正ありがとうございます。 > アノテーションはhtmlと結合させるため つまり、これらのコードはこれらダケでは動作しないものですね。 フレームワークをご利用であればそれらについても言及して頂かなければ、こちらには何も分かりません。 最後の main の中身からは Spring をご利用のようです。であれば、ご質問のタグに Spring を付けたほうが良いように思います。
hiyori_

2022/05/18 15:01

記載不足、申し訳ないです┏● ご助言大変ありがとうございます! そのように致します。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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