私は単純な電卓のtoBinaryStringを使って整数を2進換算に変換しています。加算の他に数学演算を行うときはいつでも先頭に1を、0にすることはできません。toBinaryStringは先頭に1をつけています
例えば、私は、バイナリで5または101を与えるべきである10から5を引くが、代わりに私が
出力を得る:11111111111111111111111111110001
が、これは「私はドンtoBinaryStringの問題ですが知っているのですか、何か間違っていますか?
メインコード:
if (input == 1)
{
System.out.println("- ADDITION -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.addBinary(list); // Add values in 'list' together.
}
if (input == 2)
{
System.out.println("- Subtraction -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.subBinary(list); // Subtract values in 'list' for eachother.
}
if (input == 3)
{
System.out.println("- Multiplication -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.multBinary(list); // Multiplies values in 'list' together.
}
方法:あなたがうまく機能していないsubBinary
class binaryOperations
{
private Scanner scan = new Scanner(System.in);
int getInputs(int b)
{
int input;
System.out.println("How many integers do you wish to input: ");
return input = scan.nextInt();
}
int printBinary(int b) // Number to convert
{
String foo = Integer.toBinaryString(b); // Convert input to binary
return (Integer.parseInt(foo));
}
ArrayList<Integer> addToList(ArrayList<Integer> list, int toDo)
{
for (int i = 0; i < toDo; i++)
{
if (i == 0)
System.out.println("Please enter the first integer:");
else
System.out.println("Please enter the next integer: ");
int input = scan.nextInt();
list.add(input);
}
return list;
}
// Addition //
void addBinary(ArrayList<Integer> list)
{
int temp = 0, sum = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
sum += temp;
}
String foo = Integer.toBinaryString(sum); // convert the sum to a string
System.out.println("The sum of the numbers in binary is " + foo);
}
// Subtraction //
void subBinary(ArrayList<Integer> list)
{
int temp = 0, difference = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
difference -= temp;
}
String foo = Integer.toBinaryString(difference); // convert the difference to a string
System.out.println("The difference of the numbers in binary is " + foo);
}
// Multiplication //
void multBinary(ArrayList<Integer> list)
{
int temp = 0, products = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
products *= temp;
}
String foo = Integer.toBinaryString(products);
System.out.println("The products of the numbers in binary is " + foo);
}
}
なぜ彼らはそこにいけないのですか? 1つの問題を表示するだけの複雑なコードがあります。 [MCVE]を提供して、間違っていると思われることを説明してください。 – Savior
@Pillarもし1のバイナリ値が00000001であれば、どうして私は減算をするのですか 'バイナリの数字の違いは11111111111111111111111111111111です。追加すると正しい1が得られますか? – primelf
問題は 'subBinary'ロジックであり、' toBinaryString'メソッドではありません –