Я написал простую программу командной строки для определения того, сколько времени потребуется для переноса большого файла через данный интерфейс. Я не понимаю, почему, но он всегда производит выходные данные следующим образом: для передачи 10,0 гигабайт/10240,0 мегабайт потребуется секунды Infinity или Infinity.Почему выход всегда бесконечен?
Я не понимаю, почему это дает мне этот выход.
import java.util.Scanner;
public class TransferTime {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double speed = 0;
double gigabytes = 10;
System.out.println("This will help you find out how long it will take to transfer a file");
System.out.println();
System.out.println("How many gigabytes do you want to transfer?");
gigabytes = input.nextDouble();
System.out.println("Enter 2 for USB 2, 3 for USB 3, f for FireWire 800 or t for Thunderbolt");
String connection = input.next();
System.out.println();
if (connection == "2") {
speed = 480;
} else if (connection == "f")
speed = 800;
else if (connection == "3") {
speed = 625;
} else if (connection == "f") {
speed = 100;
} else if (connection == "t") {
speed = 1280;
}
double megabytes = gigabytes * 1024;
double seconds = megabytes/speed;
double minutes = seconds/60;
System.out.println("It will take " + seconds + " seconds or " + minutes
+ " minutes to transfer " + gigabytes + " gigabytes/"
+ megabytes + " megabytes");
input.close();
}
}
Ошибка здесь: 'connection ==" 2 "'. Это должно быть 'connection.equals (" 2 ");'. Помечено как дубликат. –
Также обратите внимание: вы пытаетесь сравнить «соединение» с «f» в двух разных местах и дать два разных делителя. –