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

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

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

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

2076閲覧

起動時にNumberFormatExceptionが、客のパソコンで出る。

otftrough

総合スコア476

Java

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2018/02/19 11:57

起動時には呼び出されないはずのメソッドでエラーになります。
自分のパソコンでは正常に実行できます。
このアプリは、Twitterのツイートをブログに掲載するためのHTMLタグを複数一括で作成するものです。

java

1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4import java.net.*; 5import java.io.*; 6import java.util.*; 7import twitter4j.*; 8import twitter4j.auth.*; 9import twitter4j.conf.*; 10import mine.*; 11 12class Marcy extends JFrame implements ActionListener, KeyListener{ 13 14 public String[] keys = { 15 "*************", //Consumer Key (API Key) 16 "*****************", //Consumer Secret (API Secret) 17 "*************", 18 "*****************" 19 }; 20 21 Twitter twitter; 22 static RequestToken requestToken; 23 JTextField url; 24 JTextArea log; 25 26 public static void main(String[] args){ 27 28 Marcy f = new Marcy(); 29 f.setTitle("Marcy"); 30 f.setDefaultCloseOperation(EXIT_ON_CLOSE); 31 f.setVisible(true); 32 } 33 34 Marcy(){ 35 36 URL iconUrl = getClass().getResource("icon.png"); 37 setIconImage(new ImageIcon(iconUrl).getImage()); 38 39 //displaySize 40 GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 41 DisplayMode dm = env.getDefaultScreenDevice().getDisplayMode(); 42 int width = dm.getWidth(); 43 int height = dm.getHeight(); 44 setBounds(width / 2 - 250, height / 2 - 125, 500, 250); 45 46 JPanel base = new JPanel(); 47 base.setLayout(null); 48 add(base); 49 50 url = new JTextField(); 51 url.setBounds(0, 0, 490, 25); 52 url.addKeyListener(this); 53 base.add(url); 54 55 JButton button = new JButton("取得"); 56 button.setBounds(0, 25, 80, 30); 57 button.addActionListener(this); 58 base.add(button); 59 60 log = new JTextArea(); 61 JScrollPane sp = new JScrollPane(log); 62 sp.getVerticalScrollBar().setUnitIncrement(6); 63 sp.setBounds(0, 60, 490, 150); 64 base.add(sp); 65 66 String openUrl = null; 67 try{ 68 twitter = new TwitterFactory().getInstance(); 69 twitter.setOAuthConsumer(keys[0], keys[1]); 70 requestToken = twitter.getOAuthRequestToken(); 71 openUrl = requestToken.getAuthorizationURL(); 72 AccessToken accessToken = new AccessToken(keys[2], keys[3]); 73 twitter.setOAuthAccessToken(accessToken); 74 } catch(TwitterException e){ 75 76 e.printStackTrace(); 77 } 78 } 79 80 public void actionPerformed(ActionEvent e){ 81 82 getHtml(); 83 } 84 85 public void keyPressed(KeyEvent e){ 86 87 if(e.getKeyCode() == 10){ 88 89 getHtml(); 90 } 91 } 92 93 public void keyTyped(KeyEvent e){} 94 public void keyReleased(KeyEvent e){} 95 96 public void getHtml(){ 97 98 if(!url.getText().equals("")){ 99 100 addLog("wait..."); 101 102 try{ 103 104 String urltext = url.getText().substring(url.getText().lastIndexOf("/status/") + 8); 105 if(urltext.endsWith("/")) urltext = urltext.substring(urltext.length() - 1); 106 addLog("TweetID is " + urltext); 107 Status status = twitter.showStatus(Long.parseLong(urltext)); 108 109 File fl = new File(status.getUser().getScreenName() + " - " + urltext + ".html"); 110 int i = 0; 111 while(fl.exists()){ 112 113 fl = new File(status.getUser().getScreenName() + " - " + urltext + " (" + i + ").html"); 114 i ++; 115 } 116 try{ 117 fl.createNewFile(); 118 } catch(IOException ioe){ 119 120 ioe.printStackTrace(); 121 } 122 123 /*NetFileReader nfr = new NetFileReader(url.getText()); 124 String html = ""; 125 String line = null; 126 boolean addLine = false; 127 while((line = nfr.readLine()) != null){ 128 129 if(line.indexOf("<small class=\"time\">") >= 0){ 130 131 addLine = true; 132 } 133 if(addLine){ 134 135 html += line; 136 } 137 if(line.indexOf("</small>") >= 0){ 138 139 addLine = false; 140 } 141 } 142 ArrayList<Status> rep = new ArrayList<Status>(); 143 while(html.indexOf("/status/") >= 0){ 144 145 html = html.substring(html.indexOf("/status/") + 8); 146 Long id = Long.parseLong(html.substring(0, html.indexOf("\""))); 147 rep.add(twitter.showStatus(id)); 148 addLog("id : " + id); 149 if(html.indexOf("<small class=\"time\">") >= 0){ 150 151 html = html.substring(html.indexOf("<small class=\"time\">")); 152 } 153 } 154 try(PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fl, true),"UTF-8"))){ 155 156 int count = 1; 157 out.println("<html lang=\"ja\"><meta charset=\"utf-8\">"); 158 out.println("<head>"); 159 out.println("<script type=\"text/javascript\">"); 160 out.println(" function addTweet(elm){"); 161 out.println(""); 162 out.println(" var nh = document.getElementById(\"newhtml\");"); 163 out.println(" var nhText = elm.innerHTML.substring(elm.innerHTML.indexOf(\"&lt;div\"));"); 164 out.println(" nhText = nhText.substring(0, nhText.length - 13);"); 165 out.println(" nh.innerHTML += nhText + \"\n\";"); 166 out.println(" }"); 167 out.println("</script>"); 168 out.println("<style type=\"text/css\">"); 169 out.println(" .addButton::before{"); 170 out.println(" content: '↓このツイートを追加';"); 171 out.println(""); 172 out.println(" font-size: 1.3em;"); 173 out.println(" border: solid 1px black;"); 174 out.println(" background-color: cyan;"); 175 out.println(" box-shadow: 2px 2px 2px gray;"); 176 out.println(" }"); 177 out.println(" .addButton:hover{"); 178 out.println(" font-size: 1.1em;"); 179 out.println(" }"); 180 out.println("</style>"); 181 out.println("</head>"); 182 out.println("<body>"); 183 out.println("<textarea id=\"newhtml\" style=\"position: fixed; width: 40%; left: 55%; height: 90%;\"></textarea>"); 184 out.println("<div class=\"addButton\" onclick=\"addTweet(this)\">"); 185 out.println("<textarea style=\"display: none;\">&lt;div align=\"center\"&gt;" + getTweetUrl(status, true) + "&lt;/div&gt;</textarea>"); 186 out.println("</div>"); 187 out.println(getTweetUrl(status, false)); 188 189 for(Status sts : rep){ 190 191 if(sts.getInReplyToStatusId() == Long.parseLong(urltext)){ 192 193 out.println("<div class=\"addButton\" onclick=\"addTweet(this)\">"); 194 out.println("<textarea style=\"display: none;\">&lt;div align=\"center\"&gt;" + getTweetUrl(sts, true) + "&lt;/div&gt;</textarea>"); 195 out.println("</div>"); 196 out.println(getTweetUrl(sts, true)); 197 count ++; 198 } 199 } 200 out.println("</body></html>"); 201 addLog("count : " + count); 202 addLog("finish."); 203 } catch(IOException ioe){ 204 205 ioe.printStackTrace(); 206 }*/ 207 } catch(TwitterException ex){ 208 209 ex.printStackTrace(); 210 } catch(Exception ex){ 211 212 ex.printStackTrace(); 213 } 214 } else addLog("Text is Nothing."); 215 } 216 217 public void addLog(String str){ 218 219 System.out.println("log: " + str); 220 log.setText(log.getText() + str + "\n"); 221 log.paintImmediately(log.getX(), log.getY(), log.getWidth(), log.getHeight()); 222 log.repaint(); 223 } 224 225 public String getTweetUrl(Status status, boolean repIn){ 226 227 String conv = ""; 228 if(repIn){ 229 230 conv = "data-conversation=\"none\""; 231 } 232 String str = "<blockquote class=\"twitter-tweet\" " + conv + " data-lang=\"ja\"><p lang=\"ja\" dir=\"ltr\">" + status.getText() + "</p>&mdash; " + status.getUser().getName() + " (@" + status.getUser().getScreenName() + ") <a href=\"https://twitter.com/" + status.getUser().getScreenName() + "/status/" + status.getId() + "\">" + status.getCreatedAt().toString() + "</a></blockquote><script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>"; 233 return str; 234 } 235}

エラーは、getHtmlメソッド内の、Status status = twitter.showStatus(Long.parseLong(urltext));の、Long.parseLong(urltext)で発生していますが、そもそもgetHtmlメソッドは、「取得」ボタンを押すかJTextFiedでEnterキーを押さないと実行されません。
以下が、Jarファイルを実行してもらった時のエラーメッセージです。
行数は現在少々変わっていますが同じ文です。

C:\Users\user\Desktop\Marcy>java -jar Marcy.jar java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at Marcy.getHtml(Marcy.java:155) at Marcy.actionPerformed(Marcy.java:130) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 以下省略

java.lang.NumberFormatException: For input string: ""
と書いてありますが、なにも入力されずに実行された時にはif文でif(!url.getText().equals("")){としてあります。

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

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

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

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

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

A-pZ

2018/02/20 01:04

現在コメントアウトしているロジックが削除してください。書かれているコードを動作させた限りでは自動的に何かイベントが実行される状態ではありません。
unz.hori

2018/02/20 02:35

スタックトレースを見るとボタンが押されたような動きをしているような...
guest

回答1

0

自己解決

すみません、起動時にエラーが出たというのは、客がついた嘘でした。
実際は、入力された文字列がおかしかっただけで、正しく入力すしてボタンを押せばちゃんと動きました。

投稿2018/02/20 03:21

otftrough

総合スコア476

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問