Question

I have coded a way to get weather details from a WSDL webservice. My code works properly without any errors, but is there any way to use a For loop/while to get the three City and ZipCodes from the user?

The program should prompt for same information on the second, third and more cities by using, “for/while loop.”

How can I do this?

Here is the WSDL file:

`http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL

Here is my code:

package weather;

import com.cdyne.ws.weatherws.ArrayOfWeatherDescription;
import com.cdyne.ws.weatherws.WeatherReturn;
import java.util.Scanner;

/**
 *
 * @author elacy
 */
public class Weather {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      try {
        String zipCode1;
        String zipCode2;
        String zipCode3;
        Scanner keyboard = new Scanner(System.in);
        String City1;
        String City2;
        String City3;

        com.cdyne.ws.weatherws.Weather service = new com.cdyne.ws.weatherws.Weather();
        com.cdyne.ws.weatherws.WeatherSoap port = service.getWeatherSoap();

        \\makes this part a For loop

        System.out.println ("Please enter your First city");
        City1 = keyboard.nextLine().toUpperCase();
        System.out.println ("Please enter your First zipcode");
        zipCode1 = keyboard.nextLine();
        System.out.println ("Please enter your Second city");
        City2 = keyboard.nextLine().toUpperCase();
        System.out.println ("Please enter your Second zipcode");
        zipCode2 = keyboard.nextLine();
        System.out.println ("Please enter your Third city");
        City3 = keyboard.nextLine().toUpperCase();
        System.out.println ("Please enter your Third zipcode");
        zipCode3 = keyboard.nextLine();

        System.out.println("------------------------------------------------------");
        System.out.println("EVAN'S WEATHER FORECAST FOR: SUNDAY, OCTOBER 07, 2013");
        System.out.println("------------------------------------------------------");
        System.out.println("City   Zip   Code    Temp   Relative   Humidity");

       System.out.println(City1 +"   "+ zipCode1 + 
       port.getCityWeatherByZIP(zipCode1).getTemperature() +
       port.getCityWeatherByZIP(zipCode1).getRelativeHumidity());

       System.out.println(City2 +"   "+ zipCode2 +  
       port.getCityWeatherByZIP(zipCode2).getTemperature() +  
       port.getCityWeatherByZIP(zipCode2).getRelativeHumidity());

       System.out.println(City3 +"   "+ zipCode1 +
       port.getCityWeatherByZIP(zipCode3).getTemperature() +
       port.getCityWeatherByZIP(zipCode3).getRelativeHumidity());

       } catch (Exception ex) {
       }

     }

     private static WeatherReturn getCityWeatherByZIP(java.lang.String zip) {
       com.cdyne.ws.weatherws.Weather service = new com.cdyne.ws.weatherws.Weather();
       com.cdyne.ws.weatherws.WeatherSoap port = service.getWeatherSoap();
       return port.getCityWeatherByZIP(zip);
     }        
  }
Était-ce utile?

La solution

Pretty straightforward:

String[] cities = new String[3];
String[] zipCodes = new String[3];

for (int i = 0; i < 3; i++) {
    System.out.println ("Please enter your City No." + (i + 1) + ":");
    cities[i] = keyboard.nextLine().toUpperCase();
    System.out.println ("Please enter your Zipcode No." + (i + 1) + ":");
    zipCodes[i] = keyboard.nextLine();
}

System.out.println("------------------------------------------------------");
System.out.println("EVAN'S WEATHER FORECAST FOR: SUNDAY, OCTOBER 07, 2013");
System.out.println("------------------------------------------------------");
System.out.println("City   Zip   Code    Temp   Relative   Humidity");

for (int i = 0; i < 3; i++) {
    System.out.println(cities[i] +" " + zipCodes[i] + 
                    port.getCityWeatherByZIP(zipCodes[i]).getTemperature() + 
                    port.getCityWeatherByZIP(zipCodes[i]).getRelativeHumidity());
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top