2016-04-27 7 views
0

Ich studiere gerade Datenstruktur & ich versuche, ein String-Array in Java mit einer Warteschlange zu machen. Ich möchte der Benutzer einfügen, wie viele Element fügt sie dann (Beispiel Studenten Name). aber der Code wird nicht funktionieren, können Sie mir helfen, mir zu sagen, wo der Fehler ist?String-Array in der Implementierung eine Warteschlange

package test; 
import java.util.Scanner; 
class queue{ 
    String arr[]; 
    int size; 
    private int front; 
    private int rear; 
    private int items; 
    queue(int s){ 
     size=s; 
    String arr[]=new String[size]; 
     front=0;rear=-1; 
     items=0; 
    } 
public void insert(int x){ 
if(rear==size-1){ 
rear=-1; 
arr[++rear]=x; 
items++; 
} 
} 
public String remove(){ 
String temp=arr[front++]; 
if(front==size){ 
front=0; 
items--; 
} 
return temp; 
} 
public boolean isEmpty(){ 
return (items==0); 
} 
public boolean isFull(){ 
return (items==size); 
} 
public int n(){ 
return items; 
}} 
public class Test { 
    public static void main(String[] args) { 
     Scanner in=new Scanner(System.in); 
     queue ob=new queue(4); 
     System.out.println("How many elements?"); 
     ob.size=in.nextInt(); 

     System.out.println("Enter names:"); 
       for(int i=0;i<ob.size;i++){ 
      ob.arr[i]=in.nextLine(); 
     } 
     System.out.println("*** Names ***"); 
     for(int i=0; i<ob.size;i++){ 
      System.out.println(ob.arr[i]); 
     } 
    }} 

erhalte ich diesen Fehler für diese Linie

arr[++rear]=x; 

, der sagt „int kann nicht in Zeichenfolge konvertiert werden“

auch wenn ich den Code dieser Fehler laufen scheint zu: Nullpointer

***** Update ***** neuer code in main, es funktioniert :)

public static void main(String[] args) { 
    Scanner in=new Scanner(System.in); 
    int size; 
    System.out.println("How many elements?"); 
    size=in.nextInt(); 
    queue ob=new queue(size); 
    System.out.println("Enter names:"); 
      for(int i=0;i<size;i++){ 
     ob.arr[i]=in.nextLine(); 
    } 
    System.out.println("*** Names ***"); 
    for(int i=0; i<size;i++){ 
     System.out.println(ob.arr[i]); 
    } 
} 

und in der Warteschlange Konstruktor:

arr=new String[size]; 
+0

@azurefrog wo genau? –

+0

Java konvertiert Typen nicht automatisch für Sie (normalerweise gibt es Ausnahmen wie automatisches (un) boxen), daher können Sie einer 'String'-Variablen keinen' int'-Wert zuweisen. Verwenden Sie stattdessen eine der in die Sprache integrierten Konvertierungsmethoden, z. 'arr [++ hinten] = Integer.toString (x);' – azurefrog

+0

@azurefrog danke für diese Information –

Antwort

0

Ihr Array ist ein String-Array

String arr[]=new String[size]; 

und Sie versuchen, einen int in sie einzufügen. Wenn Sie eine int als Zeichenfolge einfügen möchten, verwenden Sie:

arr[++rear]=String.valueOf(x); 
+0

@azurefrog, lol, mit C# verwechselt. Geändert. –

+0

Danke, aber ich habe beide Möglichkeiten ausprobiert und hat nicht funktioniert. Wenn ich den Code ausführen, erscheint ein weiterer Fehler "NullPointerException" –

+1

@Mariej Fehler bei welcher Zeile? –

Verwandte Themen