1
это код, который я сделал, может кто-нибудь объяснить мне, почему выход остается 0.0?Math.pow() не работает?
(я пытался сделать программу, которая преобразует двоичный в десятичные, и я знаю, что это может быть легко достигнуто в Java другими способами)
package main;
import java.util.Scanner;
public class Class1 {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int length = input.length();
double output=0.0;
String reverse = new StringBuffer(input).reverse().toString();
for (int i=0; i==length; i+=1){
switch(reverse.charAt(i)){
case '1': output = (output + (Math.pow(2, i)));break;
case '0': break;
}
}
System.out.println(output);
}
}
как примечание: Math.pow() чрезвычайно медленный по сравнению с побитовыми операциями. Вы должны избегать этого в тривиальных случаях, таких как умножение на 2 или создание квадрата числа. –
Спасибо за вашу помощь, теперь я больше не знаю, какие петли лучше, но можете ли вы объяснить, что вы подразумеваете под этим: используйте 1 << i и как он будет выглядеть тогда? – StijnOnline
Если в настоящее время у вас есть 'Math.pow (2, i)', используйте '1 << i' вместо этого. –