2013-08-28 5 views
-1

помогите мне с этим кодом, я получаю ошибку исключения времени выполнения java.lang.nullpointerexception plz помогите мне решить эту проблему и как получить доступ к любому файлу на рабочем столе с помощью java-программы , , как будто я хочу получить доступ к любому изображению или текстовому файлу на рабочем столе или в любом другом слоте, какой код я должен писать .FYI i am noob., пожалуйста, помогите получить java.lang.nullpointerexception при запуске программы

import java.io.*; 
class jarvis 
{ 
public static void main(String args[]) 
{ 
String i=null,j=null,k=null,l=null,m=null,n=null,o=null,a=null,q=null; 
try 
{ 
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
System.out.println("Command me: "); 
if(i.equals("jarvis you there?")) 
{ 
i=br.readLine(); 

System.out.println("at your service sir"); 
} 
System.out.println("Command me: "); 
if(j.equals("run command prompt")) 
{ 
j=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start"); 
} 
System.out.println("Command me: "); 
if(k.equals("run notepad")) 
{ 
k=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("notepd.exe"); 
} 
System.out.println("Command me: "); 
if(l.equals("run paint")) 
{ 
l=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("mspaint.exe"); 
} 
System.out.println("Command me: "); 
if(m.equals("open facebook")) 
{ 
m=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start www.facebook.com"); 
} 
System.out.println("Command me: "); 
if(n.equals("open google")) 
{ 
n=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start www.google.com"); 
} 
System.out.println("Command me: "); 
if(o.equals("open youtube")) 
{ 
o=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start www.youtube.com"); 
} 
System.out.println("Command me: "); 
if(a.equals("open yahoo")) 
{ 
a=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start www.yahoo.com"); 
} 
System.out.println("Command me: "); 
if(q.equals("open omegle")) 
{ 
q=br.readLine(); 
Runtime r=Runtime.getRuntime(); 
Process p=r.exec("cmd.exe /c start www.omegle.com"); 
} 
} 
catch(Exception e) 
{ 
System.out.print(e); 
} 
} 
} 

ответ

0

Вы сравниваете i без инициализации его

String i=null 
if(i.equals("jarvis you there?")) 
    ^^^^ 
Here there is NPE 

Best вы можете сделать, это положить постоянно на левой стороне равна

if("jarvis you there?".equals(i)) 
{ 
    ... 
2
String i=null,j=null,k=null,l=null,m=null,n=null,o=null,a=null,q=null; 
try 
{ 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("Command me: "); 
    if(i.equals("jarvis you there?")) 
     ... 

Переменная i является null но вы пытаетесь разыменовать его. Выполните

i=br.readLine(); 

перед тем как сравнивать его значение.

0

Код выполнен в том порядке, в котором вы его пишете. Если вы хотите сравнить пользовательский ввод некоторого значения внутри if вы должны прочитать его, прежде чем сравнить его:

System.out.println("Command me: "); 
i = br.readLine(); 
if(i.equals("jarvis you there?")) 
{ 
    System.out.println("at your service sir"); 
} 

Что еще может дать вам исключения нулевого указателя, так как readLine() может возвращать нуль. Самый простой способ предотвратить это - переключить стороны equals. Литеральные строки - это объекты, поэтому у них есть методы, такие как equals, но они не могут быть нулевыми.

if("jarvis you there?".equals(i)) 

Следующая вещь, которую вы найдете, что ваши программы читает строку и проверяет, является ли это только первая команда, прочитайте следующую строку и проверить, если это вторая команда и так далее. Чтобы получить команду "run paint", вы должны ввести ее в качестве 4-й строки.

Вы должны сравнить ту же самую линию с каждой возможной командой. Например, используя if .. else if ... else if ... else

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
for (;;) { 
    System.out.println("Command me: "); 
    String line = br.readLine(); 
    if ("foo".equals(line)) { 
     // do foo 
    } else if ("bar".equals(line)) { 
     // do bar 
    } else if ("baz".equals(line)) { 
     // do baz 
    } else { 
     System.out.println("Unknown Command. Bye."); 
     break; 
    } 
} 

Или в Java 7 с switch

switch (line) { 
     case "foo": 
      // do foo 
      break; 
     case "bar": 
      // do foo 
      break; 
     //... 
     default: 
      // } else { 
      break; 
    } 

Или в фантазии объектно-ориентированного стиля: http://ideone.com/d6pf7T