私は、Javaと、この時間は私が
1.改宗2つのバイナリ番号が
2.バイナリにし、中にこれらの2進数の和
3.ショー結果の両方を計算し小数に、プログラムを作っていた練習していました10進数
私はコード内で効率的な方法を行っていないことを知っていますが、それは目的に沿ったものです。
(だから私は1つのプロジェクトだけでもっと練習することができます)
しかし、それは
を小数に バイナリから変換しようとしたとき、それは常に「3」として最初の数秒を表示することを私のコードで問題があります「 」を「2」とする。
誰かが私が間違っていることを教えてもらえますか?前もって感謝します。
(私はすでにインターネット上で答えを探してみましたが、私はそれを見つけることができませんでした
申し訳ありませんが、私はダムのミスで、あなたの時間を無駄にしています。。)「ForEach」ループを正しく使用するにはどうすればよいですか?
package binary2decimal2binary;
import java.util.Scanner;
import java.util.ArrayList;
public class Binary2Decimal2Binary {
private static long binary1;
private static long binary2;
private final static ArrayList POWERSOF2 = new ArrayList<Integer>();
private final static ArrayList<Integer> SEPARATED2 = new ArrayList<Integer>();
private static int temp1 = 0;
private static int result1 = 0;
private static int temp2 = 0;
private static int result2 = 0;
private final static ArrayList<Integer> SEPARATED1 = new ArrayList<Integer>();
static void binary2ArrayList(long binary1, long binary2){
String separating1 = String.valueOf(binary1);
System.out.println("Debugger 1 :" + separating1);
for(int i = 0; i < separating1.length(); i++) {
int j =(int) Character.digit(separating1.charAt(i), 10);
SEPARATED1.add(j);}
String separating2 = String.valueOf(binary2);
System.out.println("Debugger2 :" + separating2);
for(int x = 0; x < separating2.length(); x++) {
int y =(int) Character.digit(separating2.charAt(x), 10);
SEPARATED2.add(y);
}
Arraylist2Decimal();
}
static void Arraylist2Decimal(){
for(Integer intValue : SEPARATED1){
int i = 0;
temp1 = (int) SEPARATED1.get(i);
if(temp1 == 1){
result1 = (int) POWERSOF2.get(i) + result1;
}
i += 1;
System.out.println("Debugger 3:" + i);
}
for(Integer intValue: SEPARATED2){
int k = 0;
temp2 = (int) SEPARATED2.get(k);
if(temp2 == 1){
result2 = (int) POWERSOF2.get(k) + result2;
} k += 1;
System.out.println("Debugger 4:" + k);
}
};
public static void main(String[] args) {
POWERSOF2.add(1);
POWERSOF2.add(2);
POWERSOF2.add(4);
POWERSOF2.add(8);
POWERSOF2.add(16);
POWERSOF2.add(32);
POWERSOF2.add(64);
POWERSOF2.add(128);
POWERSOF2.add(256);
POWERSOF2.add(512);
POWERSOF2.add(1024);
POWERSOF2.add(2048);
POWERSOF2.add(4096);
POWERSOF2.add(8192);
POWERSOF2.add(16384);
POWERSOF2.add(32768);
Scanner scan = new Scanner(System.in);
System.out.println("Input first binary number.");
binary1 = scan.nextLong();
System.out.println("Input second binary number.");
binary2 = scan.nextLong();
scan.close();
binary2ArrayList(binary1,binary2);
System.out.println("First Number Converted:" + result1);
System.out.println("Second Number Converted:" + result2);
}
}
編集:私はいくつかのコードを追加しました私のループで何が起こっているのか確認してください。 と変なことが起こっていました。
INPUT:
OUTPUT:
デバッガ1:101
Debugger2:10
デバッガ3:1
デバッガ3:1
デバッガ3:1
デバッガ4:1
デバッガ4:1
最初の変換番号:3
2番目の変換番号:2
私は
i + = 1を追加しましたが、および
k + = 1;ループでは値は決して
に上がることはありません。私を助けてください。
Integerは既に定義済みのクラスなので、無効な変数名です。 –
@ CardinalSystemこれは当てはまりません。それを試してみてください。 Javaは 'Integer'という名前の変数を宣言します。 – ajb
それは愚かなO.o –