Member 14055675 Ответов: 2

Почему эта ошибка отображается


public class Test {

 String name ;
   
 
    public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        name =sc.next();
         
    }
    
}


В этом коде ошибка отображается под
name =sc.next();
эта линия
но когда я изменяю тип переменной на
static String name
ошибка исчезла в чем причина можете ли вы мне помочь

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

public class Test {

 static String name ;
   
 
    public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        name =sc.next();
         
    }
    
}

2 Ответов

Рейтинг:
1

CPallini

Потому что класс (т. е. static) методы имеют доступ к переменным класса.
С другой стороны, методы класса не могут получить доступ к объектным (то есть экземплярным, то есть не статическим) переменным.
Вы могли бы написать, а также

import java.util.Scanner;
public class Test
{
  String name ;
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        Test test = new Test();
        test.name = sc.next();
    }
}


Опять же, я настоятельно рекомендую вам прочитать хороший учебник по Java OOP.


Рейтинг:
1

Richard MacCutchan

Видеть Учебные Пособия По Java™ [^]