2016-12-02 66 views
0

在编写程序时,我遇到了一个stackoverflow错误,我在一个方法外实例化,所以我在互联网上搜索它,我不明白任何适当的解决方案,我的码。为什么我不能在任何方法外创建对象

所以任何人都可以请我清除我的困惑。 我使用的聚集,因为它是一个过气的关系 下面是我Mainpage.class将首先执行..

import java.util.Scanner; 
public class Mainpage { 
    Scanner in = new Scanner(System.in); 
    People people; 
public void openapp() 
{ 
    people = new People(); 
    System.out.println("Welcome to the Chat"); 
    System.out.println(); 
    System.out.println("1. Newsfeed"); 
    System.out.println("2. Chat"); 
    System.out.println("3. Friends"); 
    System.out.println("Enter your choice"); 
    int input = in.nextInt(); 


    switch(input) 
    { 
    case 1: 
     System.out.println("Newsfeed"); 
     break; 
    case 2: 
     System.out.println("Chat"); 
     break; 
    case 3: 
     System.out.println("Friends"); 
     break; 
     default : 
      System.out.println("Invalid Input"); 
    } 
    if(input == 3) 
    { 
     people.friends(); 
    } 
    } 
public static void main(String args[]){ 
    Mainpage m = new Mainpage(); 
    m.openapp(); 
} 
} 

下面是我People.class代码将在朋友的选择被称为从输入MainPage类

import java.util.Scanner; 
public class People{ 
    People ps = new People(); 
    Scanner input = new Scanner(System.in); 
    public void friends() 
    { 
     System.out.println("Your friends are"); 
     System.out.println(); 
     System.out.println("Amit"); 
     System.out.println("Rahul"); 
     System.out.println("Ankita"); 
     System.out.println("Enter the friend name to see info"); 
     String fr = input.nextLine(); 
     //ps.friend(fr); 

     switch(fr){ 
     case "Amit": 
      System.out.println("Name: Amit"); 
      System.out.println("DOB: 09-02-1993"); 
      System.out.println("Age = 23"); 
      System.out.println("Sex: M"); 
      break; 
     case "Rahul": 
      System.out.println("Name: Rahul"); 
      System.out.println("DOB: 11-10-1993"); 
      System.out.println("Age = 23"); 
      System.out.println("Sex: M"); 
      break; 
     case "Ankita": 
      System.out.println("Name: Ankita"); 
      System.out.println("DOB: 12-03-1993"); 
      System.out.println("Age = 22"); 
      System.out.println("Sex: M"); 
      break; 
     default: 
      System.out.println("You have no one With name "+fr+" in your contact list"); 
      System.out.println("Please again select the friends form the lists"); 
      ps.friends(); 
     } 

    } 

我收到错误#1,请清除我的疑问..

Exception in thread "main" java.lang.StackOverflowError 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
     at People.<init>(People.java:4) 
+0

你正在创造一个人在创造一个人(它本身需要创造一个人等) –

+1

请按照SO标准写出适当的英语 – Pranalee

+0

对不起,我的英语@Pranalee ... –

回答

5

删除People ps = new People();从你的People类,因为它会造成无限的调用People的构造函数。

调用new People()将初始化实例变量,因此它将递归地永久调用People()

+2

这会明显导致人口过剩问题! – AxelH

相关问题