2011-11-11 288 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。它必須被聲明爲public static void main(String [] arrayNameHere) – kmkemp

+0

你是什麼意思的數組名稱 – choloboy

+0

我只是試圖強調你分配給String []類型變量的名稱是不相關的。按照慣例,大多數人稱它爲「args」,但你可以隨心所欲地調用它。它的名字不是「方法簽名」的一部分,這是真正重要的。 – kmkemp

回答

5

你應該使用:

代替:

public static void main(String[] args, int result, int n, int result1) 
你將不得不學會做Java編程
+0

但我不需要傳遞我的參數:S – choloboy

+0

@choloboy您輸入的參數命令行是String []中的元素(按您指定的順序)。你可以嘗試在方法內部施放它們或做任何你喜歡的事情。 – kmkemp

+0

對不起,我不太明白你的意思:S,因爲你可能會告訴我是初學者:P – choloboy

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

有一點是咒語:

public static void main(String args[]) { 

這是確切的(好,String[] args也可以使用 - 名稱無關緊要)JVM在尋找入口點來運行程序時搜索它的咒語。

更新

如果你想從你的main()功能,他們將被編碼爲args[]數組中String對象得到任何參數。只需索引它們:

$ 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對象。如果您需要將它們轉換爲其他對象類,則必須正確解析字符串。 (Integer()和類似的東西可以派上用場了簡單的情況下)

+0

如何將我的參數傳遞給我的主要參數,如果不包含它們? – choloboy

1

爲了運行您的程序,Java需要能夠找到具有以下簽名的方法:

public static void main(String[]) 

,因爲它可以」在你的程序中找不到一個,它無處可以開始執行,因此無法編譯它。

要獲得影響到你想要的,改變的主要方法的簽名上面,並訪問這些參數在他們的String []的指數看,就像這樣:

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

如果添加對於主要方法的開始,你應該沒問題。 :D

+0

我補充說現在ecplise給了我編譯結果的錯誤,n和你給我的那段代碼的結果:S – choloboy

+0

_因此不能編譯它 - 編譯器_can_編譯它。 JVM無法查找它,因此無法運行它。 – sarnold

相關問題