忙しい現代人の腰&肩のお悩み対策!

次のようにすればiを1づつ増やして表示されます。

class Calc{
  int i=1;
  int add(){
    return i++;
  }
}


class Count{
  public static void main(String[] args){
    Calc calc = new Calc();
    System.out.println("i = " + calc.add());
    System.out.println("i = " + calc.add());
    System.out.println("i = " + calc.add());
  }
}

実行結果
i = 1
i = 2
i = 3


しかし次のように2づつ増やそうとすると、

class Calc{
  int i=1;
  int add(){
    return i+2;
  }
}


class Count{
  public static void main(String[] args){
    Calc calc = new Calc();
    System.out.println("i = " + calc.add());
    System.out.println("i = " + calc.add());
    System.out.println("i = " + calc.add());
  }
}

実行結果
i = 3
i = 3
i = 3


このようになってしまいます。どこがおかしいのでしょうか?

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

A 回答 (2件)

No.1です。


ちょっと間違ったようですが。

i++では戻り値は旧いiでそのあと+1しているはずです。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
i=i+2;
return i;
とすれば2づつ増えて実行できました。とても勉強になりました。

お礼日時:2006/06/17 20:34

i++はi=i+1の略です。


iを加算して新しいiを戻り値とします。

i+2ではi+2を戻り値とするだけで加算はされません。
    • good
    • 0

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

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

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

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

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

QResultSet での問題

だいたいのプログラム内容:
login.htmlでログインを試み、そこからメールアドレス、パスワードがerrormsg.jspにパラメータで送られ、errormsg.jspからLoginBean.java(bean)を使いSQLデータに入ってるメールアドレス、パスワードと照らし合わされ、データに登録されていなかったら、エラーメッセージが返され、合っていたらwelcom.htmlページに送られます。
たまたま@ITで似たような内容があったので、基本的には同じように作りました。
でも、うまくデータを照合し分けることができません。パラメータは調べたらきちんと通っており。ResultSetの所に問題があると分かりました。
以下はLoginBean.javaの主な問題コードです。
public boolean confirm(){
try{
//SQLへの接続省略してます
String sql_str = "SELECT email, password FROM customer where email='"+email+"'AND password='"+password+"'";
//ここが問題の部分です。
ResultSet rs = stmt.executeQuery(sql_str);
if(rs!=null){
rs.close();
stmt.close();
connection.close();
return true;
}
else{
rs.close();
stmt.close();
connection.close();
return false;}
}catch(SQLException e) {
return false;
}catch(Exception e){
e.printStackTrace();
return false;}}}
このように、パラメータからきたアドレスパスワードを使い、SQLのSELECTで検索されたものをrsに返し、rsが空でなければ、trueを返します。(このメソッドはerromsg.jspから呼ばれます。)しかしデータに登録さてないものでもrsがnullでないと判断され、trueが帰ってきます。

だいたいのプログラム内容:
login.htmlでログインを試み、そこからメールアドレス、パスワードがerrormsg.jspにパラメータで送られ、errormsg.jspからLoginBean.java(bean)を使いSQLデータに入ってるメールアドレス、パスワードと照らし合わされ、データに登録されていなかったら、エラーメッセージが返され、合っていたらwelcom.htmlページに送られます。
たまたま@ITで似たような内容があったので、基本的には同じように作りました。
でも、うまくデータを照合し分けることができません。パラメータは調べ...続きを読む

Aベストアンサー

 ResultSetオブジェクトは、行が無くてもnullにはなりませぬ。つまり、「結果が1行も無いResultSetオブジェクト」になります。

 Java2 1.4.2 APIを参照しても、Returnsに「never null」と名言されています。

 なので行があるかないかは、ResultSet.next()やResultSet.getRow()で判断します。または
SELECT Count(email) FROM customer where email='"+email+"'AND password='"+password+"'"
というSQL文で、最初の行の最初のフィールドが0であれば存在しないという判断になるかと思います。

Qプログラマがよく使う「hoge」「ほげ」って、プログラマ共通語?

ここ数ヶ月で初めてプログラムというものに触れたのですが、当初からずっと気になっていることがあります。

プログラマさんがよく使う「hoge」ってプログラマさんの共通語ですか?

初めて友人にプログラムを教えてもらった時、友人が「hoge」を使ったり「ほげほげ」って言っているのを「何それ(笑)」ってツッコんだんですけど、友人は良く使うので、どうやら日常的に使っているようです。
面白い言葉を使う友人だなぁと思っていたら、google等でプログラムの調べ物をしていると、「hoge」を使っているサイトが幾つも見つかりました。
私は今までプログラミングの外で生きてきて、「ほげ」という言葉を使う人を知りません。
試しにこのサイトで「hoge」で検索すると「PC技術者」のカテゴリばかり出てきます。

なぜプログラマさんには「hoge」を使う人が多いのでしょうか。
宜しくお願いします。

Aベストアンサー

専門用語を使うとこれは「メタ構文変数」と言い表せるらしいですね。
プログラム関係者が使うのはそれだけ広く知られているというだけのことで、なぜ知られてしまったのかについてはもはや探りようがないですが、とりあえず共通語として認識されている言葉です。

近いところではお役所などにある提出書類のサンプルの名前の欄に「山田太郎」とかありますよね。あれもメタ構文でしょう。
例の名前なので基本的には何でも良いので、「東京太郎」とか「大阪花子」とかで示される例は多いと思います。つまりそういう見本文を作る人には「太郎」や「花子」に特に思い入れがあってとか、規則や法律でそう明文化されているのでとか・・・ということは別になく、太郎や花子は名前の例としてよく示されるものであるということが広く日本人の共通認識になっているので、サンプルであることを分かりやすく示しているというだけのことなのです。
同様にプログラマー界でもとりあえず適当に付けた名前だよということを示すのに「hoge」を使うというのが共通認識になっているだけのことです。

Q数字か文字列かを判定する関数

 JAVAの初心者です、宜しくお願いします。
  
 テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。

 どこからどのように調べるのでしょうか。
 いいサイトがあれば教えて下さい。

Aベストアンサー

・ たとえば、整数か文字列かの場合、クラスIntegerのparseInt(String s)メソッドを使い、例外(NumberFormatException)が発生するかどうかで判断します。

以下のコードを参考にしてみてください。
------------------------------------------------------------
public class ParseIntSample {

public static void main(String[] args) {
System.out.println(isInteger("123"));
System.out.println(isInteger("123A"));
}

static boolean isInteger(String num) {
try {
int n = Integer.parseInt(num);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
------------------------------------------------------------
結果
true
false
------------------------------------------------------------
実数の場合は、Double.parseDouble(String s)があります。
これも、例外(NumberFormatException)を発生します。

・ たとえば、整数か文字列かの場合、クラスIntegerのparseInt(String s)メソッドを使い、例外(NumberFormatException)が発生するかどうかで判断します。

以下のコードを参考にしてみてください。
------------------------------------------------------------
public class ParseIntSample {

public static void main(String[] args) {
System.out.println(isInteger("123"));
System.out.println(isInteger("123A"));
}

static boolean isInteger(String num) {
try {
int n = Integer.parse...続きを読む

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になっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。


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

人気Q&Aランキング