こんにちは。プログラミング初心者なのでどうかご助言願います。
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語 leetcode21 Merge Two Sorted Lists 2 2022/04/24 19:35
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- C言語・C++・C# leetcode21 1 2022/04/21 11:53
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
コード中の謎のエラー
-
6桁の数字を重複なしでランダム...
-
JAVA エラー 式の開始が不正で...
-
Javaで電卓を作りたい
-
コンストラクタ内で別のコンス...
-
偶数奇数の判定
-
消費税を計算
-
iアプリでバイナリデータを16進...
-
前日日付の取得
-
Java 初心者 int型の取り扱い方
-
javaappletでgifアニメーション
-
java 継承
-
すいません、質問というか困っ...
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
「配列定数は、イニシャライザ...
-
javaでcsvファイル読込時の改行...
-
java spring でエラーが出て困...
-
javaでカレンダー作成
-
Javaで電卓を作りたい
-
SwingでJtableのヘッダ行が表示...
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
C#で実行時にメソッドの返り値...
-
(Swing)JTextFieldを半角のみ入...
-
c# デリゲート関連の命名について
-
Javaでポインタ的なことはでき...
-
複数のボタンを配置し、それぞ...
-
JUnit4のアノテーションについて
-
javaのエラーの意味がわかりま...
-
intが負の時に投げる例外はあり...
-
sin曲線とcos曲線を描くプログ...
-
C++からC#のdllを参照する際、...
-
Java 初心者 int型の取り扱い方
おすすめ情報