Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2014, 03:02   #1
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию Java. Классы. Создание объектов класса в цикле

Здравствуйте! У меня есть класс Team. И класс Tournament, одно из полей которого является массивом объектов типа Тeam. Пытаюсь создавать объекты класса Team в цикле. Но программа ругается. Где выдает ошибку закоментировал
Код:
import java.io.IOException;
import java.util.Scanner;


public class Main {

	private static Scanner in;

	public class Team {
		int place;// place in tournament
		String Name;// team name
	    int points;// points
	    int games; // games played
	    int victory; // victory
	    int draw; // number of draws
	    int loss;//losing game
	    int dif; // goal difference and goals scored
	    int goals; // goals
	    int against; // goals against
	     Team(){}
	     Team(int place,String Name, int points,int games, int victory, int draw, int loss, int goals, int against){
	    	 this.place = place;
	    	 this.Name = Name;
	    	 this.points = points;
	    	 this.games = games;
	    	 this.victory = victory;
	    	 this.draw = draw;
	    	 this.loss = loss;
	    	 this.dif = this.goals - this.against;
	    	 this.goals = goals;
	    	 this.against = against;
	     }
	     String print(){
	    	 return place+") "+Name+" "+points+"p, "+games+"g, "+"("+victory+"-"+draw+"-"+loss+"), "+dif+"gd, "+"("+goals+"-"+against+")";
	     }
	    
	}
	
	public class Tournament{
		String Name;
		Team[] Teams;
		Tournament(){}
		Tournament(String Name,Team[] Teams){
			this.Name = Name;
			this.Teams = Teams;
		}
	}
	
   public static void main(String[] Args) throws IOException{
	   int N;
	   in = new Scanner(System.in);
	   N = Integer.parseInt(in.nextLine());// number of Tournament
	   if (N<1 || N>1000){
		   throw new IOException("Input 1..999");
	   }
	   Tournament[] a = new Tournament[N];// array of Tournament 
	  
	  for(int i = 0; i<N; i++){
		 String leage = new String();
		 leage = in.nextLine();
		 if (leage.length()>100){
			 throw new IOException("exceeding 100 characters");
		 } 
		 
		 int T = Integer.parseInt(in.nextLine()); // number of command
		 if (T<1 || T>30){
			 throw new IOException("Input 1..30"); 
		 }
		 Team[] arrTeam = new Team[T];//array of Team
		 for(int j = 0;j<T;j++){
			 // пытался сделать вот так 
			// arrTeam[j] = new Team();
			 // получил в ответ No enclosing instance of type Main is accesible.
			 //Must quality the allocation with  an enclosing instance of type
			 //Main(e.g.x.new A() where x is an instance of main) 
			 arrTeam[j].Name = in.nextLine();// Вот здесь ругается ошибкой Exception in thread "main" java.lang.NullPointerException
			 // думаю что это оно говорит что нет такого объекта.
			 if (arrTeam[j].Name.length()>30){
				throw new IOException("exceeding 30 characters"); 
			 }
			 for (int k = 0; k<arrTeam[i].Name.length(); k++){
				 if ((int)arrTeam[i].Name.charAt(k)<32||arrTeam[i].Name.charAt(k)=='#'||arrTeam[i].Name.charAt(k)=='@'){
					 throw new IOException("incorrect symbol");
				 }
			 }
			 
		  }
		a[i].Name= leage;
		a[i].Teams = arrTeam.clone(); 
		 
	  } 
   }
}

нашел проблему. Объявил подклассы как static и все заработало.
В принципе тема закрыта. Но если кто в этом хорошо разбирается можете объяснить, пожалуйста, почему подклассы нужно было объявлять статик, и можно это было как-то обойти. Спасибо!

Разобрался и с этим. ЗАКРЫТО.

Последний раз редактировалось Антон Лысенко; 06.04.2014 в 04:31. Причина: ЗАКРЫТО
Антон Лысенко вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java!В программе создать одиночные объекты и массив объектов класса и вызвать методы. Andros96 Помощь студентам 0 17.11.2013 15:41
Создание двумерного массива объектов класса (С#) Fiamma Помощь студентам 2 17.03.2012 10:43
Создание объектов класса при private-наследовании _-Re@l-_ Общие вопросы C/C++ 2 30.07.2011 12:52
создание объектов класса Serjuk Общие вопросы C/C++ 8 13.05.2010 18:54
Создание объектов класса в цикле Formdet Общие вопросы .NET 4 23.04.2010 21:43