2

WSDL Web サービスから天気の詳細を取得する方法をコーディングしました。私のコードはエラーなしで正常に動作しますが、For ループ/while を使用してユーザーから 3 つの City と ZipCodes を取得する方法はありますか?

プログラムは、「for/while ループ」を使用して、2 番目、3 番目、およびそれ以上の都市に関する同じ情報を要求する必要があります。</p>

これどうやってするの?

WSDL ファイルは次のとおりです。

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

これが私のコードです:

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);
     }        
  }
4

1 に答える 1

0

非常に簡単です:

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());
}
于 2013-10-05T20:23:51.460 に答える