2013-04-04 2 views
0

У меня есть следующий код:не System.out.println работы с числами

import java.util.Scanner; 

    import javax.swing.JOptionPane; 


    public class weatherCalc { 
     public static void main(String args[]) { 
      while (true) { 
       int division = 8125/1000; 
       Scanner in = new Scanner; 
       System.out.println("How far, in inches, is it moving on a 50-mile = 0.75 in? (Please use decimels)"); 
       int weatherInput = in.nextInt(); 
       System.out.println("How long is the time period in hours? (Please use decimels)"); 
       int weatherTime = in.nextInt(); 
       int weatherOutput = weatherInput/division*50/weatherTime; 
       System.out.println("The storm is travling at "+ weatherOutput +"MPH."); 
      } 
     } 
    } 

Вы видите, система в «System.out.println (» Как далеко, в дюймах, она движется на 50-мильная = 0,75 дюйма? (Используйте децимлы) »); подчеркивается красным цветом вместе с концом «Сканер в = новый сканер»; Я не могу понять, почему, и просто пытаюсь развить это для себя. Я мог бы немного поработать над этим немного. Если кто-нибудь скажет мне, почему, это очень поможет.

+0

Я не большой java dev, но похоже, что вы пытаетесь объединить строку с целым числом. Это разрешено в Java? – brbcoding

+2

В чем сообщение об ошибке? Также будьте осторожны с делением целых чисел, поскольку результат также будет целым. '8125/1000' не' 8.125', а '8'. – Pshemo

+0

@brbcoding Да, это разрешено. Java автоматически вызывает 'toString()' для любого объекта, конкатенированного с 'String' (до тех пор, пока первый объект в цепочке конкатенации является' String'). – iamnotmaynard

ответ

4
Scanner in = new Scanner; 

должно быть:

Scanner in = new Scanner(System.in); 
+1

Я думаю, что аргумент Scanner нужен. 'System.in' – Smit

+1

@ Eng.Fouad Это не скомпилируется. – whiskeyspider

+0

А, пропустил это. Обновлен ответ. –

1

Ваш цикл в то время как должно быть, как это: (смотреть комментарии, указанные в отношении каждого измененного кода)

Scanner in = new Scanner(System.in);//Move the Scanner declaration outside loop . Don't create it every-time within the loop. 
while (true) { 
    int division = 8125/1000; 
    System.out.println("How far, in inches, is it moving on a 50-mile = 0.75 in? (Please use decimels)"); 
    int weatherInput = in.nextInt(); 
    System.out.println("How long is the time period in hours? (Please use decimels)"); 
    double weatherTime = in.nextDouble();//Take double value from input as u have specified that you want input in decimals. 
    double weatherOutput = weatherInput/division*50/weatherTime;//Changed weatherOutput type to double so that you get the result in double. 
    System.out.println("The storm is travling at "+ weatherOutput +"MPH."); 
} 
+0

Единственная разница, которую вы переместили: «Сканер в = новый сканер (System.in);' вне цикла? Вы правы, это лучшее место для него, но вы можете уточнить, что это то, что нужно изменить. Разве что-то еще? – iamnotmaynard

+0

@iamnotmaynard Другая разница тоже..айа..Я помещаю комментарий..аааам этих строк .. –

+0

Ах, верно, я вижу. – iamnotmaynard

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