
こんにちは。プログラミング初心者なのでどうかご助言願います。
javaのSwing(JFRAME)で電卓を作ろうとしているのですが、一応動作はするのですが連続計算がうまくいきません
たとえば66(画面表示は66)*3(画面表示は3)-(画面表示は198)8(画面表示は8)=190
という計算をさせたいのですが、途中でうまくいってないみたいで
最終的な答えが58、という答えが出てしまいます。(途中はきちんと198と表示されます)
下のメソッドのどこが間違っているかご指摘頂けるとありがたいです
int val =0;
int val0=0;
String op = null;
//数字
public void numberreturn(int i){
val=val*10+ i;
resultTextField.setText((new Integer(val)).toString());
}
//演算子
public void calculate(String x){
if(op==null){
if(val0!=0){
op=x;
}else{
val0=val;
val=0;
op=x;}
}else if(val==0){
op=x;
}else if(val0!=0){
returning(val0,val,op);
op=x;
}else{
val0=val;
val=0;
op=x;
}
}
//結果表示
public void ansreturn(int i){
resultTextField.setText((new Integer(i)).toString());
}
//計算を行う関数
public void returning (int i,int j,String x){
if(x!=null){
int k;
if(x=="plus"){
k=i+j;
}
else if(x=="minus"){
k=i-j;
}
else if(x=="mult"){
k=i*j;
}
else{
try{
k=i/j;
}catch(Exception e){
k=0;
}
}
i=k;
ansreturn(i);
j=0;
x=null;
}else{
j=0;
x=null;
}
}
ボタンのほうは一応こんな感じです
private void minusButtonActionPerformed(java.awt.event.ActionEvent evt) {
calculate("minus");
}
private void equallButtonActionPerformed(java.awt.event.ActionEvent evt) {
returning(val0,val,op);
}
よろしくお願いします
No.1ベストアンサー
- 回答日時:
returningメソッドの中で
一度も【val0とvalに対して代入していない】ため,
val0 = 66
val = 3
が変わらないから
66 - 8 = 58が行われている
もちろんこの58も代入されないから
66 * 3 - 8 + 5とかやると
66 + 5で71が表示される
御丁寧な回答、本当に有難う御座います!
returningメソッドの最後の
i=k;
j=0;
x=null;
この代入が失敗しているのでしょうか…
引数に対して最後に代入するメソッドにしたかったのですが、少し混乱気味です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
6桁の数字を重複なしでランダム...
-
Java 初心者 int型の取り扱い方
-
「配列定数は、イニシャライザ...
-
javaでカレンダー作成
-
C# Form処理
-
メインが含まれていません
-
複数のボタンを配置し、それぞ...
-
コード中の謎のエラー
-
sin曲線とcos曲線を描くプログ...
-
関数の引数に、stringやintなど...
-
C#2005 Imagelistの余白の除去...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
javaです。 途中まで出来ている...
-
動的配列が存在(要素が有る)か...
-
C言語のポインターに関する警告
-
StrutsでJSPからListを受け取り...
-
この警告はどうすれば?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
DataSet(DataTable)の使い方
-
Java 初心者 int型の取り扱い方
-
java初心者の質問(3つの整数の...
-
javaでcsvファイル読込時の改行...
-
Java 日付の加算がうまくいき...
-
JAVA エラー 式の開始が不正で...
-
6桁の数字を重複なしでランダム...
-
コンパイルできません
-
SwingでJtableのヘッダ行が表示...
-
C#で実行時にメソッドの返り値...
-
intが負の時に投げる例外はあり...
-
意味がわかりません
-
コンパイラが注意してくる
-
複数のボタンを配置し、それぞ...
-
Threadに関するの質問
-
C#でバブルソート
おすすめ情報