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

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

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

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

Q&A

解決済

4回答

1701閲覧

javaについて

yugdm2

総合スコア7

Java

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

0グッド

0クリップ

投稿2016/11/25 06:16

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
javaで部活動の名前と部員数が記録されているファイルを読み込み、部活動の名前をリストに表示し、クリックすると選択した部活動の部員数をテキストフィールドに表示するプログラムです。

以前回答してもらいましたが、なかなか思うような結果になりません
前回の質問
ファイルを読み込む機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

このようなエラーが出ました

Rei4_09.java:140: エラー: 変数cItemは初期化されていない可能性があります
while(cItem==null && i<MAX){
^
注意:Rei4_09.javaの操作は、未チェックまたは安全ではありません。
注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
エラー1個

###該当のソースコード

java

1package reidai; 2 3import java.awt.BorderLayout; 4import java.awt.EventQueue; 5 6import javax.swing.ButtonGroup; 7import javax.swing.JFrame; 8import javax.swing.JPanel; 9import javax.swing.border.EmptyBorder; 10import javax.swing.JScrollPane; 11import javax.swing.JList; 12import javax.swing.JTextField; 13import java.awt.FlowLayout; 14import javax.swing.JLabel; 15import java.awt.Dimension; 16import javax.swing.JButton; 17import java.awt.event.ActionListener; 18import java.awt.event.ActionEvent; 19import java.io.BufferedReader; 20import java.io.File; 21import java.io.FileReader; 22import java.io.IOException; 23import javax.swing.event.ListSelectionListener; 24import javax.swing.event.ListSelectionEvent; 25import java.awt.GridLayout; 26import java.awt.Component; 27import javax.swing.SwingConstants; 28import javax.swing.ScrollPaneConstants; 29import java.util.ArrayList; 30import java.awt.BorderLayout; 31import java.awt.EventQueue; 32import java.awt.event.ActionEvent; 33import javax.swing.JRadioButton; 34import javax.swing.JComboBox; 35 36public class Rei4_09 extends JFrame { 37 38 private static final long serialVersionUID = 1L; 39 private JPanel contentPane; 40 private JPanel panelCenter; 41 private JTextField textField01; 42 private JTextField textField02; 43 private JTextField textField03; 44 private JLabel label01; 45 private JLabel label02; 46 private JScrollPane scrollPane; 47 private JList list; 48 private JList list1; 49 private JLabel label03; 50 private JButton button; 51 private JPanel panel4; 52 private JPanel panel3; 53 private JPanel panel2; 54 private JPanel panel1; 55 private JRadioButton radioButton01; 56 private JRadioButton radioButton02; 57 private JComboBox comboBox; 58 private JRadioButton aBunkabu; 59 private JRadioButton aUndoubu; 60 private final static int MAX=60; 61 private int buinsu[]; 62 private int buinsu1[]; 63 64 private String[] aseito=new String[MAX]; 65 private String[] bseito=new String[MAX]; 66 67 public static void main(String[] args) { 68 EventQueue.invokeLater(new Runnable() { 69 public void run() { 70 try { 71 Rei4_09 frame = new Rei4_09(); 72 frame.setVisible(true); 73 } catch (Exception e) { 74 e.printStackTrace(); 75 } 76 } 77 }); 78 } 79 80 81 public Rei4_09() { 82 83 setTitle("リストとファイル"); 84 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 85 setBounds(100, 100, 700,250); 86 contentPane = new JPanel(); 87 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 88 contentPane.setLayout(new BorderLayout(0, 0)); 89 setContentPane(contentPane); 90 91 panelCenter = new JPanel(); 92 contentPane.add(panelCenter, BorderLayout.CENTER); 93 panelCenter.setLayout(new GridLayout(2, 1, 0, 0)); 94 95 96 panel1 = new JPanel(); 97 panel1.setAlignmentY(Component.BOTTOM_ALIGNMENT); 98 panelCenter.add(panel1); 99 panel1.setLayout(new GridLayout(6, 1, 0, 0)); 100 101 label01 = new JLabel("クラブ名"); 102 panel1.add(label01); 103 label01.setHorizontalAlignment(SwingConstants.LEFT); 104 105 textField01 = new JTextField(); 106 panel1.add(textField01); 107 textField01.setColumns(10); 108 109 label02 = new JLabel("部員数"); 110 label02.setHorizontalAlignment(SwingConstants.LEFT); 111 panel1.add(label02); 112 113 textField02 = new JTextField(); 114 panel1.add(textField02); 115 textField02.setColumns(10); 116 117 label03 = new JLabel("クラブ名2"); 118 panel1.add(label03); 119 label03.setHorizontalAlignment(SwingConstants.LEFT); 120 121 textField03 = new JTextField(); 122 panel1.add(textField03); 123 textField03.setColumns(10); 124 125 panel2 = new JPanel(); 126 FlowLayout fl_panel2 = (FlowLayout) panel2.getLayout(); 127 fl_panel2.setAlignment(FlowLayout.RIGHT); 128 panelCenter.add(panel2); 129 130 radioButton01 = new JRadioButton("運動部"); 131 radioButton01.addActionListener(new ActionListener() { 132 public void actionPerformed(ActionEvent e) { 133 ArrayList<String> tmpAL=new ArrayList<String>(MAX); 134 buinsu=new int[MAX]; 135 int i=0; 136 File fl = new File("./undoubu.txt"); 137 try{ 138 BufferedReader br = new BufferedReader(new FileReader(fl)); 139 String cItem; 140 while(cItem==null && i<MAX){ 141 tmpAL.add(cItem); 142 if(cItem==null) 143 break; 144 buinsu[i]=Integer.parseInt(cItem); 145 i++; 146 } 147 br.close(); 148 }catch(IOException fe){ 149 textField01.setText(fe.toString()); 150 } 151 152 tmpAL.trimToSize(); 153 list.setListData(tmpAL.toArray(new String[tmpAL.size()])); 154 String[] tmpS=tmpAL.toArray(new String[tmpAL.size()]); 155 String suuA; 156 int suuB; 157 for(int j=0;j<i-1;j++){ 158 for(int k=j+1;k<i;k++){ 159 if(buinsu[j]<buinsu[k]){ 160 suuB=buinsu[j]; 161 buinsu[j]=buinsu[k]; 162 buinsu[k]=suuB; 163 suuA=tmpS[j]; 164 tmpS[j]=tmpS[k]; 165 tmpS[k]=suuA; 166 } 167 } 168 } 169 } 170 }); 171 panelCenter.add(radioButton01); 172 173 radioButton02 = new JRadioButton("文化部"); 174 radioButton02.addActionListener(new ActionListener() { 175 public void actionPerformed(ActionEvent e) { 176 ArrayList<String> tmpAL=new ArrayList<String>(MAX); 177 buinsu1=new int[MAX]; 178 int i=0; 179 File fl = new File("./bunkabu.txt"); 180 try{ 181 BufferedReader br = new BufferedReader(new FileReader(fl)); 182 String cItem ; 183 while((cItem=br.readLine())!=null && i<MAX){ 184 tmpAL.add(cItem); 185 if(cItem==null) 186 break; 187 buinsu1[i]=Integer.parseInt(cItem); 188 i++; 189 } 190 br.close(); 191 }catch(IOException fe){ 192 textField03.setText(fe.toString()); 193 } 194 195 tmpAL.trimToSize(); 196 list.setListData(tmpAL.toArray(new String[tmpAL.size()])); 197 String[] tmpS1=tmpAL.toArray(new String[tmpAL.size()]); 198 String suu1; 199 int suu2; 200 for(int j=0;j<i-1;j++){ 201 for(int k=j+1;k<i;k++){ 202 if(buinsu1[j]<buinsu1[k]){ 203 suu2=buinsu1[j]; 204 buinsu1[j]=buinsu1[k]; 205 buinsu1[k]=suu2; 206 suu1=tmpS1[j]; 207 tmpS1[j]=tmpS1[k]; 208 tmpS1[k]=suu1; 209 } 210 } 211 } 212 213 } 214 }); 215 216 panelCenter.add(radioButton02); 217 218 219 220 ButtonGroup bGroup=new ButtonGroup(); 221 bGroup.add(radioButton01); 222 bGroup.add(radioButton02); 223 bGroup.add(aUndoubu); 224 bGroup.add(aBunkabu); 225 226 scrollPane = new JScrollPane(); 227 scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 228 scrollPane.setPreferredSize(new Dimension(120, 2)); 229 contentPane.add(scrollPane, BorderLayout. WEST); 230 231 list = new JList(); 232 list.addListSelectionListener(new ListSelectionListener() { 233 public void valueChanged(ListSelectionEvent e) { 234 textField01.setText((String)list.getSelectedValue()); 235 textField02.setText(String.valueOf(buinsu[list.getSelectedIndex()])); 236 } 237 }); 238 scrollPane.setViewportView(list); 239 } 240 241} 242

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

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

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

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

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

guest

回答4

0

ベストアンサー

そのエラーが出ている文の1行前を
String cItem;
から
String cItem="";
にするだけでコンパイル通ったんですが・・・

投稿2016/11/25 06:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yugdm2

2016/11/25 06:34

確かにコンパイルは通ったのですが、ファイル内に書かれたものが出力されません…
退会済みユーザー

退会済みユーザー

2016/11/25 07:34

while(cItem==null && i<MAX){ ではなく while(cItem!=null && i<MAX){ ですよ
yugdm2

2016/11/25 07:52

ありがとうございます! 火曜日に一度試してみます!
guest

0

結局何も理解せずに修正しても何も改善しませんよ。
私が前回の質問で一度のループでreadLineを複数回呼ぶなと回答しました。
その意味を理解せずにまったく呼ばないように修正するとは思いませんでした。

また、同じ質問を何回もしないと自分で言っていたのにさっそく同じ質問をしていますよね?前回の質問はどうなるんですか?

投稿2016/11/25 06:47

yona

総合スコア18155

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

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

yugdm2

2016/11/25 07:08

高校の授業でjavaを始めたばかりなので卒業課題を自分で作ることになり、サンプルもとに改造しているので、エラーの直し方が具体的にわからないので、しつこいようですが細かい説明をお願いします。
yona

2016/11/25 07:28 編集

卒業課題ってことはあなたの実力を図るものですよね?それを人の実力で解決してもいいんですか?teratailを使うことは学校の許可は取っているんですよね? カンニングの共犯にはなりたくないです。
guest

0

BufferedReaderから文字列を取得して、
cItemに代入する処理が抜けている?だけのようですが・・・

処理の意味をちゃんと理解できていますか?
理解しようとしていますか?

投稿2016/11/25 06:42

abs123

総合スコア1280

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

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

0

java

1String cItem; 2while(cItem==null && i<MAX){ 3}

whileの条件で、cItem==nullとしているが、この条件の前ではcItemに何も代入してません。cItemを参照する前に値をセット(初期化)してください。


コメントを受けて追記

java

1String cItem = ""; 2wihle(cItem==null && i<MAX){ 3//・・・略・・・ 4}

whileの条件を見直しましょう。
「cItemがnullでかつ iがMAX未満のときwhileのブロック内を実行する」という条件なので一度もwhileの中は実行されません。

投稿2016/11/25 06:21

編集2016/11/25 06:52
Y.H.

総合スコア7914

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

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

yugdm2

2016/11/25 06:37

ありがとうございます。String cItem=""; にすればいいとの回答が来たので、その文をいれました。
yugdm2

2016/11/25 08:09

ありがとうございます! whileの文を直してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問