マンガでよめる痔のこと・薬のこと

C++をやっていて、最近JAVAもプログラムするようになったのですが、
JAVAで使うeclipseが非常に便利なので、これをC++で使えないかと思っています。

http://www.eclipse.org/downloads/
を見ると、JAVAを使うためのeclipseとC++を使うためのeclipseは別々に用意されているようなのですが、二つ eclipse をインストールするとディスクがもったいない気がします。

● eclispe 一つで JAVAとC++の開発は出来ないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>JAVAを使うためのeclipseとC++を使うためのeclipseは


>別々に用意されているようなのですが
Eclipseはいろいろなプラグイン(機能追加用プログラム)
を組み合わせる事によって、機能を追加・変更する事が
できます。
Java以外の多数の言語にも対応していますし、使用可能な
ツール類も多種多様な物があります。
しかし、どれが必要かを選ぶのは各人の使用目的によって
異なります。
http://www.eclipse.org/downloads/
では、目的に合わせて標準的に必要なプラグインを揃えた
パッケージが用意されています。
あとは、目的に応じてプラグインの追加による機能の追加
拡張が可能です。
    • good
    • 1
この回答へのお礼

ご丁寧な回答、ありがとうございます。

お礼日時:2009/12/28 14:30

できますよ。


手っ取り早いのは、Java開発用のEclipseにCDT (http://www.eclipse.org/cdt/)を追加することでしょう。
Eclipse 3.5 Galileoだったら、Install New Softwareの画面でhttp://download.eclipse.org/tools/cdt/releases/g …を入力するとCDTを追加インストールできるはずです。
    • good
    • 2
この回答へのお礼

ありがとうございます。

お礼日時:2009/12/28 14:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qeclipseでプログラムが実行できません

プログラミング初心者です。
おかしな部分があるかと思います...。すみません...。

学校で出たC言語の課題を家でもやるために、eclipseをダウンロードしました。
MinGWもダウンロードしました。
C言語でプログラムを記述し、「すべてビルド」を押してから実行ボタンを押しましたが、「バイナリが見つかりません」というエラーが出てきてしまい、まったく実行できません。
ほかのサイトを参照しても、「コンパイル用のソフトをダウンロードしてありますか?」などの回答が多かったのですが、MinGWをダウンロードしてあるので何とも言えません。
プログラムはHello World!を表示させる程度の簡単なものです。
どのように操作をしたらうまく実行できるか教えてください。

また、eclipseとマイクロソフトのVisual Studioではどちらが使いやすいでしょうか。

ご回答よろしくお願いいたします。

Aベストアンサー

MinGWのインストールとeclipseの選択に問題がないと仮定して、
eclipse で Hello World を動かす手順は次の通りです。
--------------------------------------------------------------
メニューの "File > New > C Project" をクリック。

Project name: に適当なプロジェクト名を入力して
Project Type: を "Executable" の "Hello World ANSI C Project" にして
Toolchains: を "MinGW GCC" にして
"Finish" をクリック。

"Project Explorer" ビュー内の作成したプロジェクトのところで右クリックしたあと
"Build Project" をクリック。

"Project Explorer" ビュー内の作成したプロジェクトのところで右クリックしたあと
"Run AS > Local C/C++ Application" をクリック。

"Console" ビューに
!!!Hello World!!!
と表示される。
--------------------------------------------------------------
もっとも、No.1の方が回答されているように、
最初はMinGWだけでコンパイルして実行するほうがラクでしょう。
ソースファイルが1つだけのプログラムであれば、コマンドプロンプトから
gcc ソースファイル名
と入力したあと、
a.exe
と入力するだけです。

gcc がコマンドとして認識されない場合は、Windowsの環境変数 PATH に
MinGW の bin ディレクトリが含まれていないはずなので追加してください。

MinGWのインストールとeclipseの選択に問題がないと仮定して、
eclipse で Hello World を動かす手順は次の通りです。
--------------------------------------------------------------
メニューの "File > New > C Project" をクリック。

Project name: に適当なプロジェクト名を入力して
Project Type: を "Executable" の "Hello World ANSI C Project" にして
Toolchains: を "MinGW GCC" にして
"Finish" をクリック。

"Project Explorer" ビュー内の作成したプロジェクトのところで右クリックしたあと
"...続きを読む

QC言語での開発でエラーが出て困っています。

Eclipseを利用して初めてC言語で開発をしていますが、
エラーが発生していて困っています。
開発にはWindows7 の64ビット版を利用しています。
Program "g++" not found in PATH
Program "gcc" not found in PATH
Program "make" not found in PATH
の3種類が出ています。
初心者で申し訳ないです。
これらのエラーを解決する方法を教えてください。
宜しくお願いいたします。

Aベストアンサー

補足を読みました。
次はmakeですね。

 統合開発環境を起動してツールバーの中の「ウインドウ」→「設定」から「C/C++」をクリックし展開する。
 次に下の方の「新規 C/C++ プロジェクト・ウィザード」をクリック。

 中央のペインの「プロジェクトタイプ」で「実行可能」をクリックして展開。
 それぞれのプロジェクトが4種類現れるので、これをクリックし、右側のペインで適切なツールチェーンを選びます。
 今回は「LLVM with GCC(Windows)(MinGW)を示すようにクリックをしてください。
 この次に「優先ツールにする」を押下し、続けて「適用」ボタンを押下して設定を羽根井させてください。

 これでエラーは出なくなると思います。

QEclipseのアンインストールの仕方

 JAVA初心者です、宜しくお願いします。

 Win 7です。
 現在、Eclipse3.1を使っていますが、今度Eclipse3.4にVersionUpしようと考えています。
 Eclipse3.1はAll-In-Oneというパッッケージ?からインストールしました。
 Eclipse3.1をアンインストールしようとしても、「コントロールパネル>プログラム>プログラムのアンインストール」を見ても、Eclipse3.1は表示されていません。

 「コンピューター>C>ProgramFiles>All-In-One-Eclipse」というフォルダーはありますが、
そのフォルダーの中にも、アンインストーラー?らしきものも見当たりません。
 どのようにしてアンインストールしたらいいのでしょうか。
 「全てのプログラム」にも表示されていません。
 (インストール時にそのような設定にしたような気がします。)

 「All-In-One-Eclipse」というフォルダーを削除するとPCに問題が起こりそうな気がします。
 このまま、Eclipse3.4をインストールしても問題が起こりそうな気もします。
 このような場合には、どのようにしたらよいのでしょうか。

 JAVA初心者です、宜しくお願いします。

 Win 7です。
 現在、Eclipse3.1を使っていますが、今度Eclipse3.4にVersionUpしようと考えています。
 Eclipse3.1はAll-In-Oneというパッッケージ?からインストールしました。
 Eclipse3.1をアンインストールしようとしても、「コントロールパネル>プログラム>プログラムのアンインストール」を見ても、Eclipse3.1は表示されていません。

 「コンピューター>C>ProgramFiles>All-In-One-Eclipse」というフォルダーはありますが、
そのフォルダーの中にも、...続きを読む

Aベストアンサー

Eclipseにはインストールもアンインストールもありません。
zipを解凍すれば直ぐに使えます。消すときはフォルダごと消すだけです。

様々なバージョンを同時に使うことも可能ですし、
設定を変えた複数のEclipse の同時利用も可能です。
フォルダが異なれば大丈夫なんです。

私は1台のマシンに Indigo、Ganymede と Juno を入れてます。

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

QLinuxのgccのインクルードパス?

Linuxのgccで、インクルードファイルやライブラリのパスを設定する方法が知りたいのですが、gccについて詳しい書籍やサイトがありましたら、教えてください。

gccとccの違いも知りたいです。

例)
#include "example.h"

このままだと、example.hが無いと表示されます。

Aベストアンサー

標準ライブラリのパスは、gccのインストール時に指定して、Cプリプロセッサの中に組み込まれます。

#include "example.h"
は、まずカレントディレクトリを探し、次に gccコマンドラインの -I オプションで指定したディレクトリを探し、最後に標準ライブラリが探されます。

#include <example.h>
は、カレントディレクトリを探さない点が異なります。

ccも基本的には同じですが、Unixの種類によって機能が異なる可能性があります。Linuxの場合はcc=gccです。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

QJavaには、構造体はないんですか?

 C言語の構造体みたいなのはないんですか?

野球のデータを扱っているのですが、構造体がないのでできません。

打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。

Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。

要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。

うまい方法を教えてください。初歩的な質問でごめんなさい。

Aベストアンサー

メンバーが public なクラスが構造体と(ほぼ)同じです。

大体こんな感じ。

// sort Object using Arrays.sort()

import java.util.Arrays;

class Batter implements Comparable {
 public double rate;
 public String name;
 Batter(double r, String n) {
  rate = r;
  name = n;
 }
 public int compareTo(Object o) {
  return (int)((rate - ((Batter)o).rate)*1000.);
 }
}

class w03 {
 public static void main(String[] args) {
  Object[] batter = {
   new Batter(0.3, "ichiro"),
   new Batter(0.1, "shinjo"),
   new Batter(0.0, "irabu")
  };

  // sort
  Arrays.sort(batter);

  // print-out to console
  for (int i=0; i < batter.length; i++) {
   Batter b = (Batter)batter[i];
   System.out.println(b.name + " " + Double.toString(b.rate));
  }
 }
}

このように java.util.Arrays の sort() メソッドを使うと、C でやってた
イメージに近くなります。

C の qsort() と違って、どんなデータでもソートできるわけではなく、対象と
なるクラスは Comparable インターフェースを実装しなくてはいけません。

メンバーが public なクラスが構造体と(ほぼ)同じです。

大体こんな感じ。

// sort Object using Arrays.sort()

import java.util.Arrays;

class Batter implements Comparable {
 public double rate;
 public String name;
 Batter(double r, String n) {
  rate = r;
  name = n;
 }
 public int compareTo(Object o) {
  return (int)((rate - ((Batter)o).rate)*1000.);
 }
}

class w03 {
 public static void main(String[] args) {
  Object[] batter = {
...続きを読む

QC++とVC++の違いについて

この質問をご覧頂きありがとうございます。

みなさんに2つ、お聞きしたいことがあり、質問させていただきます。
1.C++とVC++とでは、どのくらいの違い(どういう違い、特徴)があるのでしょうか?

2.また、これからC++/VC++でプログラミングを始めようとした場合、
C++からVC++へと段階を踏んで勉強した方がよいのでしょうか?

一応、私のプログラミングの履歴としては、
言語としてVisual Basicは多少勉強はしておりました。
また、オブジェクト指向の基礎程度(多相、継承、カプセル化)は理解しています。

抽象的な質問で大変恐縮なのですが、
みなさんの経験論や、ご参考にした本、HP等がありましたら、
ご教授いただければと思います。

Aベストアンサー

こんにちは、honiyonです。
 VC++ は、Microsoftの発売している C++開発環境です。 純正C++に加え、独自に機能(という言い方でいいのかな?)を追加しており、更に開発しやすいソフト(環境)を添付してあります。

 VC++に限らず、大体はそうです。 ProC++も、Borland C++も皆そうです。
 今までお使いになっていた VBも、BASICコンパイラ+開発環境です。 
 こちらの場合、BASICに機能を追加・・・というより仕様そのものを大幅いじってますね(笑)

 VC++をただ単純に C++として使用するなら良いですが、VC++とMFCを使用してウインドウアプリケーションを作りたいという事であれば、死に物狂いな勉強が必要が必要かもしれません。Windowアプリケーションの処理プロセスを理解していないと、とっても難解に感じると思います。
 VC++でなければいや!という理由がなく、Visual Basicからスムーズに移行でき、かつVisual Basicより奥の深い事をしたい、というならば C++ Builder をお勧めします。 こちらで腕を慣らし、徐々にWindowアプリケーションの処理プロセス(WinMainから始まるプログラムの組み方の事です)を学ぶと良いかな、と思います。 その上で VC++&MFCな環境に移行すると、敷居はぐっと低くなります。
 私は一度VC++&MFCに挫折しましたが、こちらの方法で何とか理解する事が出来ました(^^;

 参考になれば幸いです(..
 

こんにちは、honiyonです。
 VC++ は、Microsoftの発売している C++開発環境です。 純正C++に加え、独自に機能(という言い方でいいのかな?)を追加しており、更に開発しやすいソフト(環境)を添付してあります。

 VC++に限らず、大体はそうです。 ProC++も、Borland C++も皆そうです。
 今までお使いになっていた VBも、BASICコンパイラ+開発環境です。 
 こちらの場合、BASICに機能を追加・・・というより仕様そのものを大幅いじってますね(笑)

 VC++をただ単純に C++として使用するなら良いで...続きを読む

QEclipseの環境変数PATHの設定場所

Eclipseとcygwinを組み合わせて使用しています。

Eclipseのバージョンは以下の通りです。
Eclipse Indigo Service Release 2
Build id: 20120216-1857


Windowsの環境変数PATHの設定を削除して、EclipseのパースペクティブのPATH設定において
${te_cygwin_loc}\bin としています。

ところが、このパースペクティブ内で「プロジェクトのビルド」をしようとすると以下のエラーがでます。

Error: Program "make" is not found in PATH

PATH=[C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\System32;C:\eclipse;]


どうもパースペクティブのPATH設定とはまったく別のPATHが設定されているようなのですが、これがどこで設定されたものなのかがよくわかりません。

なお、コマンドプロンプトでpathコマンドを実行した場合は、以下の通りとなります。
PATH=C:\Windows\System32



Eclipseにおいてcygwinのmake.exeがあるフォルダにパスを通したいのですが、パースペクティブのPATH設定以外にどこで設定するものなのでしょうか?

Eclipseとcygwinを組み合わせて使用しています。

Eclipseのバージョンは以下の通りです。
Eclipse Indigo Service Release 2
Build id: 20120216-1857


Windowsの環境変数PATHの設定を削除して、EclipseのパースペクティブのPATH設定において
${te_cygwin_loc}\bin としています。

ところが、このパースペクティブ内で「プロジェクトのビルド」をしようとすると以下のエラーがでます。

Error: Program "make" is not found in PATH

PATH=[C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/...続きを読む

Aベストアンサー

・${te_cygwin_loc}って何ですか?
https://www.google.co.jp/search?q=te_cygwin_loc
この質問しか出てきません。

・質問文で「パースペクティブ」を多用していますが、如何なる意図をもってパースペクティブなのでしょうか?

・普通にPATHの設定をするところで設定してはどうでしょうか。

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング