2013-04-19 2 views
1
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import java.util.*; 
import java.net.*; 
public class NameListListenerTest extends JFrame implements ActionListener{ 

    static ArrayList<String> nameList_2; 
    static JFrame bframe; 
    static JPanel p; 
    //JButton userB; 



    public NameListListenerTest() { 
     try { 
      JButton userB; 
      //ArrayList<String> ls = new ArrayList<String>(); 

      String str = "hiwhatsupmate#!#jake sally joe#!#asdfasdf#!#kurt#!#"; 

      int start = str.indexOf("#!#"); 
      System.out.printf("%d\n", start); 
      int end = str.indexOf("#!#", start+1); 
      System.out.printf("%d\n",end); 
      String userNames = str.substring(start+3, end-3); 
      System.out.printf("%d\n",userNames); 

      int x = userNames.length(); 
      while(true) { 
       if(x > 1) { 
        if(userNames.indexOf(" ") == 0) 
         nameList_2.add(userNames.substring(1,userNames.indexOf(" ",1))); 
        else 
         nameList_2.add(userNames.substring(0,userNames.indexOf(" "))); 
       } 
       else 
        break; 
      } 
       p = new JPanel(new GridLayout(nameList_2.size(),1)); 
       for(int i=0; i<nameList_2.size(); i++){ 
        userB = new JButton(nameList_2.get(i)); 
        userB.addActionListener(this); 
        p.add(userB); 
       } 
      } catch (Exception e) { 
         e.printStackTrace(); 
       } 
     } 
    public static void main(String args[]) { 
     //nameList_2.add("kurt");  
     bframe=new NameListListenerTest(); 
     bframe.add(p);  

     bframe.setLocation(32,32);   
       bframe.setSize(50,500); 
     bframe.setVisible(true);     
     bframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 

    public void actionPerformed(ActionEvent e) { 
     JButton jb = (JButton) e.getSource(); 
     System.out.printf("Connectin to user\n"); 

    } 
} 

Мой выходошибка llegalFormatConversionException по программе графического интерфейса Java

13 
30 
java.util.IllegalFormatConversionException: d != java.lang.String 
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source) 
    at java.util.Formatter$FormatSpecifier.print(Unknown Source) 
    at java.util.Formatter.format(Unknown Source) 
    at java.io.PrintStream.format(Unknown Source) 
    at java.io.PrintStream.printf(Unknown Source) 
    at NameListListenerTest.<init>(NameListListenerTest.java:28) 
    at NameListListenerTest.main(NameListListenerTest.java:53) 
Exception in thread "main" java.lang.NullPointerException 
    at java.awt.Container.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at javax.swing.JFrame.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at NameListListenerTest.main(NameListListenerTest.java:54) 
Process java exited with code 1 

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

EDIT:

Теперь я получаю

java.lang.NullPointerException 
    at NameListListenerTest.<init>(NameListListenerTest.java:36) 
    at NameListListenerTest.main(NameListListenerTest.java:53) 
Exception in thread "main" java.lang.NullPointerException 
    at java.awt.Container.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at javax.swing.JFrame.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at NameListListenerTest.main(NameListListenerTest.java:54) 

после фиксации %s

ответ

3

спецификатора формата является неправильным. Заменить

System.out.printf("%d\n",userNames); 

с

System.out.printf("%s\n",userNames); 

Кроме того, ArrayListnameList_2 никогда не инициализируется вызывая NPE, как показано в редактировании.

ArrayList<String> nameList_2 = new ArrayList<>() 
+0

Это, казалось, работать на часть, теперь я получил новую ошибку в моей части редактирования –

+1

Есть целый ряд проблем, например, значение 'x' никогда не изменяется в вашем цикле' while', заставляя его зацикливаться на неопределенный срок. Пройдите код с помощью отладчика. – Reimeus

+0

большое спасибо :), я потратил много времени на исправление других ошибок, но получилось очень хорошо, я верю –

1

Проблема возникает из:

System.out.printf("%d\n",userNames); 

System.out.printf следует C Printf синтаксис. В этом синтаксисе% d заменяет целое число, но вы даете ему строку.

1

Вы получаете нулевой указатель exeption из-за p. Я думаю, что nameList_2.add(userNames.substring(0,userNames.indexOf(" "))); имеет проблему поэтому nameList_2.size() возвращает нулевое значение

Смежные вопросы