2017-09-05 7 views
0

Queueを使用して、ユーザー入力から文字列を読み取ろうとしています。残念ながら、それは動作していません。以下に示すコードの問題は何ですか?あなたのコードでJavaでキューを使用して行を読む

public static void main(String[] args) { 

       // TODO Auto-generated method stub 
     java.util.Queue q=new LinkedList<String>(); 

     Scanner scan= new Scanner(System.in); 
     System.out.println("Enter a data"); 
     String line=scan.nextLine(); 
     Iterator<String> it=q.iterator(); 
     while (it.hasNext()){ 
      System.out.println("dongudeyim"); 
      if (it.next().equals("(")){ 
       q.add(line); 
       System.out.println(q.isEmpty()); 
      } 
      if(q.iterator().equals(")")){ 
       q.poll(); 
      } 

      System.out.println(q.isEmpty()); 
     } 
    } 
+1

どのような問題があるようですか。どのようなエラーや結果がありましたか? – nadavvadan

答えて

0

@javalearner


String line=scan.nextLine(); 
    Iterator<String> it=q.iterator(); 
    while (it.hasNext()){ 

あなたは、任意の値は、このキュー(Q)で追加されていません。だから、Iterator(it)は毎回falseを返し、whileループは実行されません。

qのイテレーターメソッドを呼び出す前に、いくつかの値をキューに追加する必要があります。

if (it.next().equals("(")){ 
     q.add(line); 
     System.out.println(q.isEmpty()); 
    } 
    if(q.iterator().equals(")")){ 
     q.poll(); 
    } 

そして、上記の部分では、イテレータメソッドを再度呼び出す必要はありません。変数にit.next()の値を格納し、それをifブロックで使用するだけです。

String value = it.next(); 
if(value.equals(")")) { 

https://beginnersbook.com/2014/06/java-iterator-with-examples/
これは、あなたがより良い:)を理解するのに役立ちます。

+0

あなたの答えをありがとうが、私はイテレータを使用して行のすべての要素をチェックしようとします。あなたは私にそれをしてもいいか教えてくれますか? – javalearner

0

ありがとうございました。私はこれのようにそれを解決する。

import java.util.*; 


    public class Queue { 

     public static void main(String[] args) { 

        // TODO Auto-generated method stub 
      java.util.Queue<String> q=new LinkedList<String>(); 

      Scanner scan= new Scanner(System.in); 
      System.out.println("Enter a data"); 
      String line=scan.nextLine(); 

       System.out.println(line); 

       for (int i=0;i<line.length();i++){ 

        if(line.charAt(i)==('(')){ 
        q.add("("); 

        } else if(line.charAt(i)==(')')){ 
         q.poll(); 

        } 
       }System.out.println(q.isEmpty()); 


     } 
    } 
関連する問題