2015-04-27 12 views
0

Я написал простую программу командной строки для определения того, сколько времени потребуется для переноса большого файла через данный интерфейс. Я не понимаю, почему, но он всегда производит выходные данные следующим образом: для передачи 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(); 

    } 
} 
+3

Ошибка здесь: 'connection ==" 2 "'. Это должно быть 'connection.equals (" 2 ");'. Помечено как дубликат. –

+0

Также обратите внимание: вы пытаетесь сравнить «соединение» с «f» в двух разных местах и ​​дать два разных делителя. –

ответ

2

Разделение на 0 даст вам бесконечность. И вы делите на 0, потому что скорость остается 0, так как все ваши условия ложны (подсказка - не сравнивайте строки с ==).

+0

Спасибо! Это сработало! Это также будет полезно в будущем. Мне просто жаль, что я не узнал об этом раньше. Наверное, я до сих пор не догадывался об этом, потому что в большинстве моих программ до сих пор не задействованы Strings. – Jblagden

 Смежные вопросы

  • Нет связанных вопросов^_^