
こんにちは。プログラミング初心者なのでどうかご助言願います。
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ランキング
-
「配列定数は、イニシャライザ...
-
Javaのファイル名チェックについて
-
JAVAでCの関数ポインタのような...
-
SwingでJtableのヘッダ行が表示...
-
Javaで四角をつくったのですが...
-
6桁の数字を重複なしでランダム...
-
式の型は配列型で int に解決済...
-
初心者ですが、今javaで簡単な...
-
C#で判断文(三択)の省略形は...
-
Java 初心者 int型の取り扱い方
-
共有メモリについて
-
マインスイーパーもどきをつく...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
ビープ音をなめらかに鳴らしたい
-
double型変数値の整数部分のみ...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
実数からの小数部の取得
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
Java 初心者 int型の取り扱い方
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
javaでカレンダー作成
-
intが負の時に投げる例外はあり...
-
C#で実行時にメソッドの返り値...
-
JUnit4のアノテーションについて
-
6桁の数字を重複なしでランダム...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
C#でバブルソート
-
プログラムの作り方
-
全組み合わせの出力
-
SwingでJtableのヘッダ行が表示...
-
アンマネージDLLで、ダイアログ...
-
c# デリゲート関連の命名について
-
複数のボタンを配置し、それぞ...
おすすめ情報