简体   繁体   中英

How to make my code accepts an input

I would just like to ask on how can I make my code to just get the input instead of declaring it? Here's my program. I want to input different atomic numbers and not just "37" like what's in my code. Don't mind my comments, it's in my native language. Thanks!

 public class ElectConfi {    

      public static void main(String s[]) {

            int atomicNumber = 37;
            String electronConfiguration = getElectronConfiguration(atomicNumber);
            System.out.println(electronConfiguration);
      }
      public static String getElectronConfiguration(int atomicNumber) {

            int[] config = new int[20]; //dito nag store ng number of elec. in each of the 20      
             orbitals.
            String[] orbitals = {"1s^", "2s^", "2p^", "3s^", "3p^", "4s^", "3d^", "4p^", "5s^", 
            "4d^", "5p^", "6s^", "4f^", "5d^", "6p^", "7s^", "5f^", "6d^", "7p^", "8s^"};  
            //Names of the orbitals
            String result="";
            for(int i=0;i<20;i++) //dito ung i represents the orbital and tapos ung j 
            represents ng electrons
            {
                    for(int j=0;(getMax(i)>j)&&(atomicNumber>0);j++,atomicNumber--) //if atomic 
                    number > 0 and ung orbital ay kaya pa magsupport ng more electrons, add 
                    electron to orbital ie increment configuration by 1
                    {
                            config[i]+=1;
                    }
                    if(config[i]!=0)        //d2 nagche-check to prevent it printing empty 
                    orbitals
                    result+=orbitals[i]+config[i]+" ";      //orbital name and configuration 
                    correspond to each other
            }
            return result;
       }
       public static int getMax(int x) //returns the number of max. supported electrons by each 
       orbital. for eg. x=0 ie 1s supports 2 electrons
       {
            if(x==0||x==1||x==3||x==5||x==8||x==11||x==15||x==19)
                    return 2;
            else if(x==2||x==4||x==7||x==10||x==14||x==18)
                    return 6;
            else if(x==6||x==9||x==13||x==17)
                    return 10;
            else
                    return 14;
      }
 }

You can use either a Scanner or BufferedReader and get the user input

Using Scanner

Scanner scanner = new Scanner(System.in);
System.out.println("Please input atomic number");
int atomicNumber = scanner.nextInt();

Using BufferedReader

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int atomicNumber = Integer.parseInt(reader.readLine());
public static String getElectronConfiguration(int atomicNumber) {}

This method accepting any int value and will return String result. so you only need to provide different number as input. There is no change required in this method.

How to provide different inputs?

You can use Scanner to do that.

Scanner scanner = new Scanner(System.in);
System.out.println("Please input atomic number");
int atomicNumber = scanner.nextInt();

Now call your method

String electronConfiguration = getElectronConfiguration(atomicNumber);

What are the other ways?

You can define set of values for atomicNumber in your code and you can run those in a loop

You can get the user input from a command line argument:

public static void main(String s[]) {

        if (s.length == 0) {
           // Print usage instructions
        } else {
            int atomicNumber = Integer.parseInt(s[0]);
            // rest of program
        }
  }

You can get input from command line arguments by doing below :

 Scanner scanner = new Scanner(System.in);
 String inputLine = scanner.nextLine(); //get entire line
 //or
 int inputInt= scanner.nextInt();//get an integer

Check java.util.Scaner api for more info - http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM