Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //MobilePhone.java
- package phone;
- /*
- For Runner.java
- */
- public class MobilePhone {
- //Attributes
- private float load;
- private char network;
- private float ratePerText;
- private float ratePerCall;
- //Error Checker
- boolean negativeError = false;
- //Constructor
- public MobilePhone(float init_load, char init_network) {
- load = init_load;
- network = init_network;
- }
- //Methods
- public float checkBalance() {
- return load;
- }
- public void call(int minutes, char networkReceiver) {
- //negativeError
- negativeError = false;
- //ratePerCall value
- switch(network) {
- case 's': ratePerCall = 3; break;
- case 't': ratePerCall = 5; break;
- case 'g': ratePerCall = 7; break;
- default: break;
- }
- //Calculate
- if (network == networkReceiver) {
- //Cost
- float cost = load;
- cost -= minutes * ratePerCall;
- //Find negative
- if (cost < 0) {
- System.out.println("The load value cannot be negative.");
- negativeError = true;
- }
- else load -= minutes * ratePerCall;
- }
- else {
- //Cost
- float cost = load;
- cost -= minutes * (ratePerCall * 2);
- //Find negative
- if (cost < 0) {
- System.out.println("The load value cannot be negative.");
- negativeError = true;
- }
- else load -= minutes * (ratePerCall * 2);
- }
- }
- public void text(int length, char networkReceiver) {
- //negativeError
- negativeError = false;
- //ratePerText value
- ratePerText = 1; //value is always 1
- //price increases every 160 char
- //Calculate
- if (network == networkReceiver) {
- //Cost
- float cost = load;
- cost -= (float) length / 160 * ratePerText;
- //Find negative
- if (cost < 0) {
- System.out.println("The load value cannot be negative.");
- negativeError = true;
- }
- else load -= (float) length / 160 * ratePerText;
- }
- else {
- //Cost
- float cost = load;
- cost -= (float) length / 160 * (ratePerText * 2);
- //Find negative
- if (cost < 0) {
- System.out.println("The load value cannot be negative.");
- negativeError = true;
- }
- else load -= (float) length / 160 * (ratePerText * 2);
- }
- }
- public void reload(float amount) {
- if (amount < 0) System.out.println("The amount must not be a negative value.");
- else load += amount;
- }
- public char getNetwork() {
- return network;
- }
- public void setNetwork(char network) {
- this.network = network;
- }
- public boolean getNegativeError() {
- return negativeError;
- }
- }
- //Runner.java
- package phone;
- /*
- */
- import java.util.Scanner;
- import java.util.Random; //generate random receiver network
- public class Runner {
- public static void main(String[] args) {
- boolean exit = false;
- int option = 0;
- char network = 's';
- //Instance
- MobilePhone phone = new MobilePhone((float) 0.0,'s');
- //Start
- do {
- //generate random receiver network
- int[] networkArray = {1, 2, 3};
- int networkRandom = new Random().nextInt(networkArray.length);
- switch(networkArray[networkRandom]) {
- case 1: network = 's'; break;
- case 2: network = 't'; break;
- case 3: network = 'g'; break;
- }
- //Display Text
- System.out.println("1. Call");
- System.out.println("2. Text");
- System.out.println("3. Check Load");
- System.out.println("4. Reload");
- System.out.println("5. Network");
- System.out.println("6. Exit");
- System.out.printf("Input: ");
- Scanner optionScanner = new Scanner(System.in);
- option = optionScanner.nextInt();
- //Action
- switch(option) {
- case 1: //Call
- boolean exitCall = false;
- do {
- //Input
- System.out.printf("Phone Number Input: ");
- Scanner phoneNumber = new Scanner(System.in);
- String lineCall = phoneNumber.next();
- //Output Check
- if(lineCall.length() != 10) System.out.println("Please input 10 digits.");
- else {
- System.out.println("Calling " + lineCall + " with network " + network);
- System.out.printf("Minutes Called Input: ");
- Scanner minutesCalled = new Scanner(System.in);
- int minutesCall = minutesCalled.nextInt();
- phone.call(minutesCall, network);
- if(phone.getNegativeError()) break;
- else {
- System.out.println("Called for " + minutesCall + " minutes at the rate of network " + phone.getNetwork() + ".");
- System.out.printf("New Balance: Php %.2f\n", phone.checkBalance());
- }
- exitCall = !exitCall;
- }
- }while(!exitCall);
- break;
- case 2: //Text
- boolean exitText = false;
- do {
- //Input
- System.out.printf("Phone Number Input: ");
- Scanner phoneNumber = new Scanner(System.in);
- String lineText = phoneNumber.next();
- //Output Check
- if(lineText.length() != 10) System.out.println("Please input 10 digits.");
- else {
- System.out.println("Texting " + lineText + ".");
- System.out.printf("Message Input: ");
- Scanner textMessaged = new Scanner(System.in);
- String textMessage = textMessaged.nextLine();
- phone.text(textMessage.length(), network);
- if(phone.getNegativeError()) break;
- else {
- System.out.println("Message successfully sent!");
- System.out.printf("New Balance: Php %.2f\n", phone.checkBalance());
- }
- exitText = !exitText;
- }
- }while(!exitText);
- break;
- case 3: //Check Balance
- System.out.printf("Load: Php %.2f\n", phone.checkBalance());
- break;
- case 4: //Reload
- System.out.printf("Reload Input: ");
- Scanner amountAdded = new Scanner(System.in);
- int reloadValue = amountAdded.nextInt();
- phone.reload(reloadValue);
- System.out.printf("New Balance: Php %.2f\n", phone.checkBalance());
- break;
- case 5: //Network
- //Display
- System.out.println("Curent Network: " + phone.getNetwork());
- System.out.println("Change Network");
- System.out.println("1. Yes");
- System.out.println("2. No");
- System.out.printf("Input: ");
- //Input
- Scanner networkOption = new Scanner(System.in);
- int choice = networkOption.nextInt();
- if(choice == 1) {//Yes
- //Display
- System.out.println("Available networks: s, t, g");
- System.out.println("Network Input: ");
- //Input
- char tempNetwork = phone.getNetwork();
- Scanner networkAvailableOption = new Scanner(System.in);
- phone.setNetwork(networkAvailableOption.next().charAt(0));
- //Output
- if(phone.getNetwork() == 's') System.out.println("Changed to network " + phone.getNetwork());
- else if (phone.getNetwork() == 't') System.out.println("Changed to network " + phone.getNetwork());
- else if (phone.getNetwork() == 'g') System.out.println("Changed to network " + phone.getNetwork());
- else {
- phone.setNetwork(tempNetwork);
- System.out.println("Network remained as network " + phone.getNetwork() + ".");
- }
- break;
- }
- case 6: exit = !exit;
- }
- } while(!exit);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement