SAI TEJ99 Ответов: 1

Массив не может отображать выходные данные в java


import java.lang.*;
import java.util.Scanner;

class Casio
{
	String abc[];
	Scanner j = new Scanner(System.in);
	
	public Casio(int x)
	{
		System.out.println("IM IN DEFAULT CONSTRUCTOR");
		String abc[] = new String[x];
		
		for(int i=0;i<x;i++)
		{
			System.out.println("ENTER THE NAME OF FRIEND "+(i+1));
			abc[i]= j.nextLine();
		}
		
	}
	
	public void show(int q)
	{
		for(int ji=0;ji<q;ji++)
		{
			System.out.println("THE NAMES ARE : "+(abc[ji]));//<-- Error at Line number 27
		}
	}

}

public class mycode
{
	public static void main(String args [])
	{
		int n,q;
		Scanner s = new Scanner(System.in);
		System.out.println("ENTER INITIALIZATION VALUE");
		n = s.nextInt();
		q=n;
		Casio obj = new Casio(n); 
		obj.show(q);//<-- Error at  line number 43
	}
}


РЕЗУЛЬТАТ, КОТОРЫЙ Я ПОЛУЧАЮ, ТАКОВ:

Исключение в потоке "main" java.lang.Исключение NullPointerException
в колледж.Компания Casio.показать(mycode в.Ява:27)
в clg.mycode.main(mycode.java:43)

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

Когда я выполняю программу . Он принимает входные данные, но не показывает выходные данные. Я пытаюсь взять входные данные из массива и отобразить выходные данные с помощью вызова метода. пожалуйста, помогите мне. Спасибо

1 Ответов

Рейтинг:
11

OriginalGriff

Конструктор Casio создает локальный массив под названием "abc", который "скрывает" версию уровня класса. В результате версия уровня класса никогда не получает никаких назначенных ей значений или вообще никакого пространства для элементов.
Измените эту строку:

String abc[] = new String[x];
До настоящего времени:
abc = new String[x];
И попробуй еще раз.

Серьезно, вы бы нашли это очень, очень быстро, если бы использовали отладчик ... это должен быть ваш первый порт захода, когда у вас возникают проблемы во время выполнения.


SAI TEJ99

Когда я изменил его на abc[] = новая строка[x];
он показывает ошибку, что я должен вставить ".class", чтобы завершить выражение, и левая часть присваивания должна быть переменной.
:/

OriginalGriff

Мой c**k up - я забыл убрать квадратные скобки - смотрите пересмотренный код (но вы должны были бы сами это заметить!)

SAI TEJ99

Спасибо за вашу помощь:) Это Сработало . Я только что выучил C/C++/СУБД/структуры данных,я новичок в java :/ . можете ли вы предложить мне хорошую книгу, чтобы преуспеть в java ?

OriginalGriff

Начните с "обычных трех": O'Reilly, Wrox и Addison Wesley - все они делают отличные технические книги по языкам, которые берут вас от новичка до продвинутого.

Или лучше, найдите местный курс - преподавание человеком, который знает предмет, работает лучше, потому что это может попытаться объяснить по - разному, когда вы не понимаете- книги не могут!