2011-11-11 9 views
1
import java.util.Scanner; 

public class data { 

    public static int setoriginal() { //prompt user to input 4 digit number 
     int n = 0; 
     int l = 0; 

     do { 
      Scanner input = new Scanner(System.in); 

      System.out.println("Please enter a 4 digit number: "); 
      n = input.nextInt(); 

      if (n >= 1000 && n <= 9999) { 
       break; 
      } else { 
       System.err. 
        printf("You did not enter 4 digits\n"); 
      } 

      l = l + 1; 
     } 
     while (l < 3); 

     return n; 
    }   //end method 

    public static int encrypt(int n) { //encrypt number inputted by user 

     int e1 = (((n/1000) + 7)/10); 
     int e2 = ((((n % 1000)/100) + 7)/10); 
     int e3 = ((((n % 100)/10) + 7)/10); 
     int e4 = ((((n % 10)/1) + 7)/10); 

     int e = e1 * 1000 + e2 * 100 + e3 * 10 + e4; 

     int firstPart = e % 100; 
     int lastPart = e/100; 

     int result = firstPart * 100 + lastPart; 

     return result; 
    }   //end method 

    public static int decrypt(int result) { //decrypt encrypted number 

     int d1 = (((result/1000) - 7) * 10); 
     int d2 = ((((result % 1000)/100) - 7) * 10); 
     int d3 = ((((result % 100)/10) - 7) * 10); 
     int d4 = ((((result % 10)/1) - 7) * 10); 

     int d = d1 * 1000 + d2 * 100 + d3 * 10 + d4; 

     int firstPart1 = d % 100; 
     int lastPart1 = d/100; 

     int result1 = firstPart1 * 100 + lastPart1; 

     return result1; 
    }   //end method 

    public static int decrypt1(int n) { //decrypted number inputted by user 

     int dd1 = (((n/1000) - 7) * 10); 
     int dd2 = ((((n % 1000)/100) - 7) * 10); 
     int dd3 = ((((n % 100)/10) - 7) * 10); 
     int dd4 = ((((n % 10)/1) - 7) * 10); 

     int dd = dd1 * 1000 + dd2 * 100 + dd3 * 10 + dd4; 

     int firstPart1 = dd % 100; 
     int lastPart1 = dd/100; 

     int result1 = firstPart1 * 100 + lastPart1; 

     return result1; 
    }   //end method 

    public static void display(int n, int result, int result1) { //output results 
     System.out.println("Originl number is: " + n); 
     System.out.println("\nEcrypted numebr is: " + result); 
    }   //end method 

    public static void display1(int n, int result, int result1) { //output results 
     System.out.println("Originl number is: " + n); 
     System.out.println("\nDecrypted numebr is: " + result1); 
    }   //end method 

    public static void getOriginal(int n) { //return original number 
     System.out.println("The original number is: \n" + n); 
    }   //end method 

    public static void getEncrypt(int n, int result) { //return encrypted number 
     System.out.println("The encrypted number is: \n" + result); 
    }   //end method 

    public static void main(String[]args, int result, int n, int result1) { 
     int m = 0; 
     Scanner input1 = new Scanner(System.in); 

     System.out.print("\nPlease choose from the following menu "); 
     System.out.print("\n1. Enter an original number"); 
     System.out.print("\n2. Encrypt the number and print it"); 
     System.out.print("\n3. Decrypt a number and print it"); 
     System.out.print("\n4. Quit\n"); 
     m = input1.nextInt(); 

     while (m < 1 || m > 4) { 
      System.out.print("Error choose a number from 1-4"); 
      m = input1.nextInt(); 
     } 

     if (m == 1) { 
      setoriginal(); 
      main(args, m, m, m); 
     } 

     else if (m == 2) { 
      if (setoriginal() == 0) { 
       System.out. 
        print 
        ("Please enter an original number first"); 
       main(args, m, m, m); 
      } else { 
       encrypt(n); 
       display(n, result, result1); 
       main(args, n, result, result1); 
      } 
     } else if (m == 3) { 
      if (encrypt(n) < 0) { 
       System.out. 
        print("Please encrypt your number first"); 
       main(args, n, result, result1); 
      } else { 
       decrypt(n); 
       display1(n, result, result1); 
       main(args, n, result, result1); 
      } 
     } else if (m == 4) { 
      System.exit(0); 

     } 

    } 
} 

eclipseでコンパイルエラーは発生しませんが、「選択にメインタイプが含まれていません」というエラーが表示されます。何が間違っている可能性がありますか?また、他のエラーが表示された場合は、私に知らせてください。Eclipseで「選択項目にメインタイプが含まれていません」というメッセージが表示されるのはなぜですか?

+0

"main"という名前のメソッドは、javaが探すものではありません。特定のメソッドSIGNATUREを探しています。 – kmkemp

+0

配列名がどういう意味ですか? – choloboy

+0

String型の変数に代入する名前は無関係であることを強調しようとしていました。大抵の人はそれを "args"と呼んでいますが、好きなものを呼び出すことができます。その名前は「メソッドシグネチャ」の一部ではありません。これが本当に重要です。 – kmkemp

答えて

5

あなたは使用する必要があります。

の代わり:

public static void main(String[] args, int result, int n, int result1) 
+0

ですが、私のパラメータを渡す必要はありません:S – choloboy

+0

@choloboyあなたが入力するパラメータコマンドラインはString []内の要素です(指定した順序で)。メソッドをキャストしたり、メソッド内で好きなことをしようとすることができます。 – kmkemp

+0

申し訳ありませんが、私はかなりあなたが意味するものを理解していません:あなたはおそらく私は初心者だと言うことができるように:P – choloboy

1
public static void main(String[]args, int result, int n, int result1) { 

を使用すると、Javaプログラミングをやって学習する必要があるとしていることの一つは呪文です:

public static void main(String args[]) { 

これは正確です(よく、また、JVMは、プログラムを実行するためのエントリポイントを探すときにJVMが検索することを要求します。

更新

あなたは彼らがargs[]配列にStringオブジェクトとしてエンコードされますあなたのmain()関数から任意のパラメータを取得したい場合。

$ cat Echo.java ; javac Echo.java ; java Echo Hello Cruel World 
import java.lang.System; 

class Echo { 
    public static void main(String args[]) { 
     for(int i=0; i<args.length; i++) { 
      System.out.println(args[i]); 
     } 
    } 
} 
Hello 
Cruel 
World 
$ 

もちろん、それらはStringオブジェクトです。それらを他のオブジェクトクラスに変換する必要がある場合は、文字列を正しく解析する必要があります。 「それができるので

public static void main(String[]) 

:(。Integer()と同様のものが単純な場合のために便利になることができます)あなたのプログラムを実行するために

+0

それらを含まない場合、私のメインに私のパラメータを渡す方法は? – choloboy

1

、Javaは次のシグネチャを持つメソッドを見つけることができるようにする必要がありますあなたのプログラムの中で1つを見つけると、それはどこにも実行を開始しないので、それをコンパイルすることはできません。

、あなたが望む影響を与える上記のようにmainメソッドのシグネチャを変更し、そうのように、[]文字列のその指標の面で引数にアクセスするには:あなたが追加した場合

result = Integer.parseInt(args[0]); 
n = Integer.parseInt(args[1]); 
result1 = Integer.parseInt(args[2]); 

あなたの主な方法の始まりにそれはうまくいくはずです。 :D

+0

私はecpliseが私に与えたコードの結果とnと結果にコンパイルエラーを与えていると付け加えました。S – choloboy

+0

これでコンパイルできません_コンパイラはコンパイルできます。 JVMはそれを見つけることができないため、JVMを実行することはできません。 – sarnold