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

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

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

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

Q&A

1回答

1104閲覧

identfurlがないといわれます

soragon

総合スコア0

Java

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

0グッド

1クリップ

投稿2021/09/21 08:41

編集2021/09/21 12:16

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
線グラフを作っています

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

identfirlがありません

1エラーメッセージ 2```LineGraph.java:26: エラー: <identifier>がありません 3a = aa; 4 ^ 5LineGraph.java:27: エラー: <identifier>がありません 6b = bb; 7 ^ 8LineGraph.java:28: エラー: <identifier>がありません 9c = cc; 10 ^ 11LineGraph.java:29: エラー: <identifier>がありません 12d = dd; 13 ^ 14LineGraph.java:30: エラー: <identifier>がありません 15e = ee; 16 ^ 17LineGraph.java:31: エラー: <identifier>がありません 18f = ff; 19 ^ 20LineGraph.java:33: エラー: <identifier>がありません 21a = aa / 5; 22 ^ 23LineGraph.java:34: エラー: <identifier>がありません 24b = bb / 5; 25 ^ 26LineGraph.java:35: エラー: <identifier>がありません 27c = cc / 5; 28 ^ 29LineGraph.java:36: エラー: <identifier>がありません 30d = dd / 5; 31 ^ 32LineGraph.java:37: エラー: <identifier>がありません 33e = ee / 5; 34 ^ 35LineGraph.java:38: エラー: <identifier>がありません 36f = ff / 5; 37 ^ 38 39### 該当のソースコード 40 41```java 42import java.awt.Color; 43import java.awt.Graphics; 44import javax.swing.JLabel; 45import javax.swing.JFrame; 46import java.awt.Dimension; 47import java.awt.BorderLayout; 48 49import javax.swing.JPanel; 50public class LineGraph extends JFrame { 51 52 53int a = new java.util.Scanner(System.in).nextInt(); 54int b = new java.util.Scanner(System.in).nextInt(); 55int c = new java.util.Scanner(System.in).nextInt(); 56int d = new java.util.Scanner(System.in).nextInt(); 57int e = new java.util.Scanner(System.in).nextInt(); 58int f = new java.util.Scanner(System.in).nextInt(); 59 60int aa; 61int bb; 62int cc; 63int dd; 64int ee; 65int ff; 66 67a = aa; 68b = bb; 69c = cc; 70d = dd; 71e = ee; 72f = ff; 73 74a = aa / 5; 75b = bb / 5; 76c = cc / 5; 77d = dd / 5; 78e = ee / 5; 79f = ff / 5; 80 int data[] = {a, b, c, d, e, f}; 81 82 public void paint(Graphics g) 83 { 84 super.paint(g); 85 g.drawLine( 50, 250, 250, 250); 86 for (int i=0; i<7; i++) { 87 String s = String.format("%3d", i * 1); 88 g.drawString(s, i * 20 + 40, 270); 89 } 90 91 g.drawLine( 50, 40, 50, 250); 92 for (int i=0; i<51; i++) { 93 String s = String.format("%3d", i * 10); 94 g.drawString(s, 28, 250 - i * 20); 95 } 96 97 for (int i=0; i<7; i++) { 98 int x1 = i * 20 + 50; 99 int x2 = (i + 1) * 20 + 50; 100 int y1 = 250 - data[i] * 2; 101 int y2 = 250 - data[i+1] * 2; 102 g.drawLine( x1, y1, x2, y2); 103 } 104 } 105 106 LineGraph() { 107 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 108 setTitle("LineGraph"); 109 setSize(300, 300); 110 setVisible(true); 111 } 112 113 public static void main(String args[]){ 114 new LineGraph(); 115 } 116} 117

試したこと

staticやpublicがないと出るらしいですがちゃんとあります

補足情報(FW/ツールのバージョンなど)

jdk

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

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

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

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

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

tkturbo

2021/09/21 09:02

2021/09/21 17:41質問時点のタイトルにある「identfurl」、同質問文内にある「identfirl」でGoogle検索をかけてみましたが、ヒントになりそうな検索結果が出てきません。 「identifier」の誤りではないですか? また、エラーメッセージは全文を記載してほしいです。
dodox86

2021/09/21 09:36

そもそもコードがムチャクチャです。フィールドの宣言や処理がごっちゃになっています。いきなりぜんぶ書いてエラーに混乱するのではなく、少しずつ書き進めましょう。
mike2mike4

2021/09/21 10:16

LineGraph()が関数宣言になってません。
jimbe

2021/09/21 10:53

この Scanner の書き方を最近よく見かけるように思うのですが、どこかでこのように教えられているのでしょうか。 悪影響が大きいように思います。
soragon

2021/09/21 12:07

関数宣言するにはどうすればよいですか? dodox86さんへ
soragon

2021/09/21 12:08

dodox86じゃなくてmike2mike4さんでした
mike2mike4

2021/09/21 12:17

Java Silverとったの昔なんで知識がおぼろげですが、関数宣言だけで無くいろいろ直すところがあるかと。LineGraphクラスの中にmainが宣言されているのもどうかと。dodox86さんの言うとおり少しずつ試行錯誤しながら書きましょう
soragon

2021/09/21 12:20

う~ん 本に書いてあるもののところどころ買えただけなんだけどなぁ
mike2mike4

2021/09/21 12:25

私が勘違いしている可能性もあるので、まずはHallo Worldから始めましょう。その方が実力が付きます。
soragon

2021/09/21 12:31

ありがとうございました!
soragon

2021/09/21 21:25

どうすればエラーは消えるのですか?
guest

回答1

0

簡単に言えば、メソッド内にしか書けないことをメソッド外に書いているため、メソッド外に書ける書式と違うということでエラーとなっています。

具体的に動作するコードにするには、どうしたいのかが分かりませんので答えられません。
少なくとも Swing ではキー入力するために Scanner は使えません。

java でウインドウを使ってどうこうするモノを作ることは、 System.out.println や Scanner を使ったコマンド型のプログラムよりも難易度が格段に違います。
大変失礼ですが、このエラーで戸惑われているようでは『まだ早いのでは』と思わざるを得ません。


GUI で完結するように作ってみました。

LineGraph.java

java

1package teratail_java.q360628; 2 3import java.awt.*; 4import java.awt.event.*; 5 6import javax.swing.*; 7import javax.swing.event.DocumentEvent; 8import javax.swing.event.DocumentListener; 9 10public class LineGraph extends JFrame { 11 12 public static void main(String args[]) { 13 new LineGraph().setVisible(true); 14 } 15 16 private static final int DATASIZE = 6; 17 18 LineGraph() { 19 super("LineGraph"); 20 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 21 22 LineGraphPanel graphPanel = new LineGraphPanel(DATASIZE); 23 DataPanel dataPanel = new DataPanel(DATASIZE, new DataPanel.ChangeListener() { 24 @Override 25 public void changed(int index, int value) { 26 graphPanel.setData(index, value); 27 } 28 }); 29 30 add(graphPanel, BorderLayout.CENTER); 31 add(dataPanel, BorderLayout.NORTH); 32 pack(); 33 } 34 35 private static class LineGraphPanel extends JPanel { 36 private int data[]; 37 38 LineGraphPanel(int datasize) { 39 setPreferredSize(new Dimension(300, 300)); 40 setMinimumSize(getPreferredSize()); 41 42 data = new int[datasize]; 43 } 44 45 void setData(int index, int value) { 46 data[index] = value; 47 repaint(); 48 } 49 50 public void paint(Graphics g) { 51 super.paint(g); 52 53 //Xスケール 54 g.drawLine( 50, 250, 250, 250); 55 for (int i=0; i<data.length; i++) { 56 String s = String.format("%3d", i); 57 g.drawString(s, i * 20 + 40, 270); 58 } 59 60 //Yスケール 61 g.drawLine( 50, 40, 50, 250); 62 for (int i=0; i<=10; i++) { 63 String s = String.format("%3d", i * 10); 64 g.drawString(s, 28, 250 - i * 20); 65 } 66 67 //グラフ 68 for (int i=0; i<data.length-1; i++) { 69 int x1 = i * 20 + 50; 70 int x2 = (i + 1) * 20 + 50; 71 int y1 = 250 - data[i] * 2; 72 int y2 = 250 - data[i+1] * 2; 73 g.drawLine( x1, y1, x2, y2); 74 } 75 } 76 } 77 78 private static class DataPanel extends JPanel { 79 interface ChangeListener { 80 void changed(int index, int value); 81 } 82 83 private JLabel messageLabel = new JLabel("数値を入力してください"); 84 private ChangeListener listener; 85 86 DataPanel(int size, ChangeListener listener) { 87 super(new BorderLayout()); 88 this.listener = listener; 89 90 add(messageLabel, BorderLayout.NORTH); 91 92 JPanel inputPanel = new JPanel(new FlowLayout()); 93 for(int i=0; i<size; i++) { 94 inputPanel.add(new LabelAndInputField(i, 0)); 95 } 96 add(inputPanel, BorderLayout.CENTER); 97 98 setNormalState(); 99 } 100 101 private void setNormalState() { 102 messageLabel.setForeground(Color.BLACK); 103 } 104 105 private void setErrorState() { 106 messageLabel.setForeground(Color.RED); 107 } 108 109 private class LabelAndInputField extends JPanel implements ActionListener, DocumentListener, FocusListener { 110 private int number; 111 private JLabel label; 112 private JTextField field; 113 114 LabelAndInputField(int number, int initialValue) { 115 super(new BorderLayout()); 116 this.number = number; 117 118 field = new JTextField(""+initialValue, 3); 119 field.addActionListener(this); 120 field.getDocument().addDocumentListener(this); 121 field.addFocusListener(this); 122 123 label = new JLabel(number+":"); 124 125 add(label, BorderLayout.WEST); 126 add(field, BorderLayout.CENTER); 127 128 setNormalState(); 129 } 130 131 private void setNormalState() { 132 label.setForeground(Color.BLACK); 133 DataPanel.this.setNormalState(); 134 } 135 136 private void setErrorState() { 137 label.setForeground(Color.RED); 138 DataPanel.this.setErrorState(); 139 } 140 141 @Override 142 public void actionPerformed(ActionEvent ae) { 143 try { 144 int data = Integer.parseInt(field.getText()); 145 listener.changed(number, data); 146 } catch(NumberFormatException e) { 147 setErrorState(); 148 field.requestFocus(); 149 } 150 } 151 152 @Override 153 public void removeUpdate(DocumentEvent e) { setNormalState(); } 154 @Override 155 public void insertUpdate(DocumentEvent e) { setNormalState(); } 156 @Override 157 public void changedUpdate(DocumentEvent e) { setNormalState(); } 158 159 @Override 160 public void focusLost(FocusEvent e) { actionPerformed(null); } 161 @Override 162 public void focusGained(FocusEvent e) {} //ignore 163 } 164 } 165}

投稿2021/09/22 03:22

編集2021/09/22 07:26
jimbe

総合スコア13209

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問