-3

次のコードは、else ステートメントで実行されます。どこで間違えたのかわかりません。*以下のコメントで実行したい。*B は以下のコメントで実行されています。

    package com.java;
    import java.util.Scanner;

    public class Solution 
    {
       static int n;
       static String w[]; 

       public static void main(String[] args) 
       {
          System.out.println("enter no of string between 1 to 50");
          Scanner scanner = new Scanner(System.in);
//* A
          if ((1<n) && (n<=50))
          {
             n = scanner.nextInt();
             System.out.println("enter " +n+  "strings between 1 to 2000 length");              
             for (int i=0; i<n; i++)
             {
                 w[i]= scanner.next();
                 if ((1<w[i].length()) && (w[i].length()<2000))
                 {
                    System.out.println("ok");           
                 }
             }
             System.out.println(w); 
          }
// *B 
         else
          {
             System.out.println("coming due to static");
          }    
       }
    }
4

5 に答える 5

1

You didn't initialize n, so you're not satisfying the if condition, since uninitialized static int variables are 0 by default.

So:

if ((1<n) && (n<=50)) is not evaluated to true, so else will be executed.

Note that you can't access static variable from non-static method (See @NilsH answer). And that's make a lot of sense..

于 2013-04-29T17:35:17.017 に答える
1

まず、メソッドを操作するときは、変数staticを参照する必要があります。クラスに属する変数staticを参照しようとすると、それが間違っているため、コンパイラは文句を言います。non-static静的変数は、クラス自体には属しません。

次に、タイプミスがあるか、コードを忘れていると思います。n設定されることはありません。したがって、staticコンテキストではゼロ初期化され、else にヒットするためです。ユーザー入力またはその他の手段を介してn、ステートメントの前に実際に設定するつもりだったと思います。ifすべてをそのままにしてstatic、実際に に値を指定するとn、コードが機能するはずです。

たとえば、おそらく次の割り当てを行う必要があります。

n = scanner.nextInt();

if文の前。

あなたが読みたい次の数字を読む際にあなたのコードには別の問題がありますが、それはあなたに解決してもらいます。

于 2013-04-29T17:49:13.170 に答える
0

作っstatic int nstatic String w[]公開してみましたか?

いいえ:

public static int n ;
public static String w[] ; 
于 2013-04-29T17:38:17.650 に答える
0

おそらく必要なのは、そのすべてのコードを非静的メソッドに移動することです。次に、メインメソッドで次のようなことを行います

Solution s = new Solution();
s.myNonStaticMethod();
于 2013-04-29T17:38:23.983 に答える