2013-03-14 3 views
0

Цель моей программы - спросить, какова температура (F) и каково погодное условие снаружи.Застрял на Java-программе (java.io. *;)?

Погодное условие может быть как солнечным (1), дождем (2), облачным (3), так и снегом (4.) Числа 1-4 будут использоваться для уточнения состояния погоды (я не знаете, как сделать это любым другим способом ...)

Затем, в зависимости от комбинации temp и weatherCondition я хочу, чтобы иметь возможность отображать 3 предметов одежды из 10 вариантов, основанных на комбо temp и weatherCondition.

Я все еще учусь, так что я прошу прощения, если мой вопрос или проблема кажется обыденным ...

В тот момент, когда пользователь вводит temp и weatherCondition, ответ дается в зависимости от комбо из двух входов (например, солнечно-солнечный, замерзающий снег).

Вместо этого, я хотел бы создать один или несколько txt-файлов, и каждый из них назвал бы что-то вроде hotSunny.txt например. Внутри этих txt-файлов я перечислил 10 видов одежды. Я в конечном счете, чтобы программа распознать, какие комбо соответствует его соответствующий текстовый файл, а затем случайным образом отображать 3 из 10.

То, что я получил до сих пор ...

public static void main(String[] args) 
    { 
     double temperature;  
     int weatherCondition; 
     String input;   


     input = JOptionPane.showInputDialog("What is " + 
           "the current temperature?"); 
     temperature = Double.parseDouble(input); 


     input = JOptionPane.showInputDialog("Sweet I now know the temperature! " + 
      "Now please take a look out the nearest window is it Sunny , Rainy ," + 
      " Cloudy or Snowy? " + 
      "(1 = Sunny) (2 = Raining) " + 
      "(3 = Cloudy) (4 = Snowing)"); 


     weatherCondition = Integer.parseInt(input); 


     if (temperature <= 32){ 
      if (weatherCondition == 4){ 
       freezingSnowing(); 
      } else if (weatherCondition == 3){ 
       freezingCloudy(); 
      } else if (weatherCondition == 2){ 
       freezingRain(); 
      } else { 
       freezingSunny(); 
      } 
    }.......... 
     else if ((temperature >= 33) && (temperature <= 50)) { 

     else if ((temperature >= 51) && (temperature <= 75)) { 

     else if ((temperature >= 76) && (temperature <= 140)) { 

public static void freezingSnowing()  
{ 
    JOptionPane.showMessageDialog(null, "It's is snowing! I recommend that you dress very warm" + 
         "and wear a large coat that is preferably water proof."); 
} 
+3

И ваш вопрос будет ...? – MadProgrammer

+0

Как я могу использовать программу для отображения 3 из 10 garmets, которые я написал в каждом txt-файле случайным образом в зависимости от компиляции temp/weathercondition. Так что, если бы его 28F и Snowing, я бы хотел, чтобы что-то вроде перчаток, пальто и бывших для показа? Для целей этой программы он должен случайно выбрать 3 garmets из списка 10 в файле txt, который я делаю. – user2162984

+0

'(int) Math.round (Math.random() * 9)' будет генерировать случайное число между 0-9. Я бы сохранил короткий список номеров, которые вы уже сгенерировали, так что вы не генерируете один и тот же номер дважды, но это только я ... – MadProgrammer

ответ

0

Ваш метод freezingSnowing должен выглядят так:

public static void freezingSnowing() { 
    file = new File(MyWeatherApp.class.getResource 
           (path + "freezingSnowing.txt")); 
        // path to the txt file 
        // where path is the local path to the file 
    scanner = new Scanner(file); 

    ArrayList<String> garments = new ArrayList<>(10); 
    while(scanner.hasNextLine()) { 
     garments.add(scanner.nextLine()); 
    } 

    ArrayList<Integer> indices = new ArrayList<>(3); 
    for(int i = 0; i < 3; i++) { 
     while(true) { // watch out for duplicates 
      int rand = (int)(Math.random() * 9); 
      if(!indices.contains(rand)) 
       break; 
     } 
     indices.add(rand); 

    JOptionPane.showMessageDialog(null, "It's is snowing! " + 
       "I recommend that you dress very warm " + 
       "and wear " + garments.get(indices.get(1)) + 
       ", " garments.get(indices.get(2)) + 
       " and " + garments.get(indices.get(3)) + 
       "."); 
} 
+0

Спасибо, сэр или мама ... – user2162984

+0

Нужно ли мне сохранить txt файлы в определенном месте, чтобы программа работала? – user2162984

+0

Да, для каждой комбинации дайте ему имя подписи метода, например _ «C: \ user \ Documents \ My Weather Text Files \ freezingSnowing.txt» _ для 'freezingSnowing()'. – Mordechai

0

Это моя случайная выборка.

public static void main(String[] args) { 
    String[] weatherCond = new String[] {"cold", "hot"}; 
    ArrayList<String> garmets = new ArrayList<String>(); 
    garmets.add("clothes"); 
    garmets.add("hat"); 
    garmets.add("gloves"); 
    garmets.add("coat"); 
    ArrayList<String> pick; 
    int ITEM = 3; 

    int temperature = 29; 

    if (temperature >= 30) { // hot condition 
     System.out.println("weather condition " + weatherCond[0]); 
     pick = garmets; 
     for (int i = 0; i < ITEM; i++) { 
      int idx = (int) (Math.round(Math.random() * pick.size()) % pick.size());   
      System.out.print(pick.get(idx) + " "); 
      pick.remove(idx); 
     } 
    } else { 
     System.out.println("weather condition " + weatherCond[1]); 
     pick = garmets; 
     for (int i = 0; i < ITEM; i++) { 
      int idx = (int) (Math.round(Math.random() * pick.size()) % pick.size());   
      System.out.print(pick.get(idx) + " "); 
      pick.remove(idx); 
     } 
    } 
} 

Кроме того, если вы хотите использовать набор исправлений garmets для конкретных условий погоды, вы могли бы использовать HashMap который использует погодные условия в качестве ключевых и garmet групп в качестве значения.