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

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

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

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

4577閲覧

Processingにおいて「クラス・コンストラクターが存在しません」というエラーが出る

Ekito

総合スコア4

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2020/09/30 05:54

編集2020/09/30 05:56

Processingにおいて「クラスが存在しません」というエラーが出てしまいます。

Massimo Banzi著『Arduinoをはじめよう 第二版』の第6章「クラウドとの会話」で解説されているスケッチを自分で作成してみました。

しかし、その中で
・「URL」と「StringTokenizer」という二つのクラス
・「BufferedReader(InputStreamReader)」というコンストラクター
が存在しないというエラーが発生しました。

Processing

1try { 2 URL url = new URL(feed); //このURLというクラスが存在しないと言われる 3 URLConnection conn = url.openConnection(); //このURLConnectionも存在しないと言われる 4 conn.connect(); 5 6 BufferedReader in = new BufferedReader( //このBufferedReaderが存在しないと言われる 7 new InputStreamReader(conn.getInputStream())); 8 9 while ((data = in.readline()) != null) { 10 11 StringTokenizer st = //このStringTokenizerが存在しないと言われる 12 new StringTokenizer(data, "\"<>,.()[] "); 13 while (st.hasMoreTokens()) { 14 chunk = st.nextToken().toLowerCase(); 15 16 if (chunk.indexOf("love") >= 0 ) 17 love++; 18 if (chunk.indexOf("peace") >= 0) 19 peace++; 20 if (chunk.indexOf("arduino") >= 0) 21 arduino++; 22 } 23 }

使用PCはMacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)、
OSはCatalina バージョン10.15.5、
使用ソフトウェアはProcessing3です。

本の通りに記述しているのですが、本の情報がすでに古くて上記のソフトウェアに対応していないのでしょうか。エラーを解決する方法を知りたいです。

どうかご教授いただければ幸いです。よろしくお願いいたします。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

説明がないとは思えないのですが、↓のようなものが(コードの先頭に必要なのですが、説明が本の)どっかに書いてありませんか?

Processing

1import java.net.*; 2import java.io.*; 3import java.util.*;

投稿2020/09/30 08:30

編集2023/08/12 10:29
TN8001

総合スコア9862

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

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

Ekito

2020/09/30 09:25

お返事いただきありがとうございます。 ありました。先頭に、「import processing.serial.*;」という記述がありました。これを書いても前述したエラーが出てしまいます。全文を下の方に記述しました。 TN8001さんが書いてくれた「import java.net.*;」等に書き換えると、今度は「Serial」などのクラスが存在しないというエラーが出ます。 ```processing //Example 08A: Arduinoネットワークランプ import processing.serial.*; String feed = "http://blog.makezine.com/index.xml"; int interval = 10;//フィードを取得する間隔 int lastTime;//最後に取得した時間 int love = 0; int peace = 0; int arduino = 0; int light = 0;//ランプが測った明るさ Serial port; color c; String cs; String buffer = ""; //arduinoから送られた文字を溜めるところ PFont font; void setup() { size(640, 480); frameRate(10);//早い更新は不要 font = loadFont("HelveticaNeue-Bold-32.vlw"); fill(255); textFont(font, 32); String arduinoPort = Serial.list()[0]; port = new Serial(this, arduinoPort, 9600);//arduinoに接続 lastTime = 0; fetchData(); } void draw() { background( c ); int n = (interval - ((millis() - lastTime)/1000)); //3つの値をベースに色を組み立てる c = color(peace, love, arduino); cs = "#" + hex(c, 6);//arduinoへ送る文字を準備 text("Arduino Networked Lamp", 10, 40); text("Reading feed:", 10, 100); text(feed, 10, 140); text("Next update in " + n + " seconds", 10, 450); text("peace", 10, 200); text(" " + peace, 130, 200); rect(200, 172, peace, 28); text("love ", 10, 240); text(" " + love, 130, 240); rect(200, 212, love, 28); text("arduino ", 10, 280); text(" " + arduino, 130, 280); rect(200, 252, arduino, 28); //画面に色情報を表示 text("sending", 10, 340); text(cs, 200, 340); text("light level", 10, 380); rect(200, 352, light/10.23, 28); if (n <= 0) { fetchData(); lastTime = millis(); } port.write(cs); if (port.available() > 0) { int inByte = port.read(); if (inByte != 10) { buffer = buffer + char(inByte); } else { //newlineが届いたので、データを処理しよう if (buffer.length() > 1) { //データがちゃんとあるか //最後の文字は改行コードなので切り落とす buffer = buffer.substring(0, buffer.length() - 1); //bufferの文字を整数に変換 light = int(buffer); //次の読み込みサイクルのためにバッファを掃除 buffer = ""; port.clear(); } } } } void fetchData() { //フィードのパースにこれらの文字列を使用 String data; String chunk; love = 0; peace = 0; arduino = 0; try { URL url = new URL(feed); URLConnection conn = url.openConnection(); //接続を準備 conn.connect(); //接続先からやってくるデータを一行ずつバッファするための仮想的なバイプ BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); //フィードを一行ずつ読む while ((data = in.readline()) != null) { StringTokenizer st = new StringTokenizer(data, "\"<>,.()[] "); while (st.hasMoreTokens()) { chunk = st.nextToken().toLowerCase(); if (chunk.indexOf("love") >= 0 ) love++; if (chunk.indexOf("peace") >= 0) peace++; if (chunk.indexOf("arduino") >= 0) arduino++; } } if (peace > 64) peace = 64; if (love > 64) love = 64; if (arduino > 64) arduino = 64; peace = peace*4; love = love*4; arduino = arduino*4; } catch (Exception ex) { ex.printStackTrace(); System.out.println("ERROR: "+ex.getMessage()); } } ```
TN8001

2020/09/30 09:30

import processing.serial.*; import java.net.*; import java.io.*; import java.util.*; こうするとどうなりますか?
Ekito

2020/09/30 11:38

お返事ありがとうございます。無事解決しました!エラーが出なくなり、スケッチを実行できるようになりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問