Member 13620781 Ответов: 1

Как отобразить список достопримечательностей в городе, когда пользователь ввел название города.


программа предназначена для отображения списка достопримечательностей в городе, когда пользователь вводит название города . Я пытаюсь использовать этот код, но он будет отображать оператор "нет информации" и не отображать списки . Я новичок в использовании java . Спасибо за помощь .

Что я уже пробовал:

import java.util.*;

public class Tourism
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		System.out.print("Enter city ('P' for Penang, 'M' for Melaka, 'J' for Johor): ");
		char city = input.next(".").charAt(0);
		
		try {
		if(city=='P'||city=='p')
		{
			City p = new City(123, "Penang");
			System.out.println("City id: " + p.id + ", " + p.name);
		}
		else if(city=='M'||city=='m')
		{
			City m = new City(456, "Melaka");
			System.out.println("City id: " + m.id + ", " + m.name);
		}
		else if(city=='J'||city=='j')
		{
			City j = new City(789, "Johor");
			System.out.println("City id: " + j.id + ", " + j.name);
		}
		else
			throw new InputMismatchException();
		}
		catch(InputMismatchException ex)
		{
			System.out.println("Input Error: Wrong input!");
		}
		
		City c = new City();
		System.out.println(c.toString());

		

		
	}
}

class City
{
	protected int id;
	protected String name;
	protected Attraction[] a = new Attraction[12];
	
	City()
	{}
	
	City(int id, String name)
	{
		this.id = id;
		this.name =name;
	}	

	public String toString()
	{
		if(name=="Penang")
			return "List of Attraction: \n-ESCAPE Theme Park\n-Pinang Peranakan Museum\n-Queensbay Mall\n-Ayer Itam Laksa Assam";
		else if(name=="Melaka")
			return "List of Attraction: \n-Skytrex Adventure\n-A'Famosa\n-Melaka Premium Outlet\n-Mahkota Parade";
		else if(name=="Johor")
			return "List of Attraction: \n-Rockworld\n-Johor Art Gallery\n-Johor Premium Outlet\n-D'Laksa Asam Laksa";
		else
			return "No information";
	}

}

class Attraction extends City
{
	protected int typeID;
	
	Attraction()
	{}
	
	Attraction(int id, String name, int typeID)
	{
		super(id, name);
		this.typeID = typeID;
	}
	
}

1 Ответов

Рейтинг:
7

Richard MacCutchan

Потому что вы создаете новое City предметы повсюду и немедленно избавляясь от них. У вас должна быть единственная ссылка на City объект так что он все еще существует в конце вашего if ... else блоки. Что-то вроде:

public static void main(String[] args)
{
    City currentCity = null; // a single reference object
    Scanner input = new Scanner(System.in);
    System.out.print("Enter city ('P' for Penang, 'M' for Melaka, 'J' for Johor): ");
    char city = input.next(".").charAt(0);

    try {
    if(city=='P'||city=='p')
    {
        currentCity = new City(123, "Penang");
    }
    else if(city=='M'||city=='m')
    {
        currentCity = new City(456, "Melaka");
    }
    else if(city=='J'||city=='j')
    {
        currentCity = new City(789, "Johor");
    }
    else
        throw new InputMismatchException();
    }
    catch(InputMismatchException ex)
    {
        System.out.println("Input Error: Wrong input!");
    }

    // print the city details for the current object
    System.out.println("City id: " + currentCity.id + ", " + currentCity.name);

    System.out.println(currentCity.toString());