d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > Simple Addition "program/tool"
Prev12
Add Reply New Topic New Poll
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Dec 15 2014 10:15pm
Code
package NumberReader;

import java.io.*;
import java.util.Scanner;

public abstract class NumberReaderBase implements INumberReader
{
protected Scanner in;
protected PrintStream out;
protected Number maximumNumber, minimumNumber;
protected int amountOfNumbers;

public NumberReaderBase(INumberReaderConfig config)
{
readConfig(config);
}

private void readConfig(INumberReaderConfig config)
{
in = new Scanner(config.getInputer());
out = config.getPrinter();
maximumNumber = config.getMaximumNumber();
minimumNumber = config.getMinimumNumber();
amountOfNumbers = config.getAmountOfNumbers();
}

protected Number getMaximumNumber() { return maximumNumber; }
protected Number getMinimumNumber() { return minimumNumber; }
protected int getAmountOfNumbers() { return amountOfNumbers; }

protected abstract Number readNumber(String msg) throws NumberNotFoundException;

protected abstract boolean isValidNumber(Number number);

protected void printLine(String line)
{
out.println(line);
}

}


And now I for the extension to this which will solve your problem.

Code
package NumberReader.IntegerReader;

import NumberReader.NumberReaderBase;
import NumberReader.INumberReaderConfig;
import NumberReader.NumberNotFoundException;

public abstract class IntegerReader extends NumberReaderBase
{

public IntegerReader(INumberReaderConfig config)
{
super(config);
}

protected Number readNumber(String msg) throws NumberNotFoundException
{
Integer number = 0;

do
{
out.println(msg);

if(!in.hasNextInt())
throw new NumberNotFoundException("Integer not found.");
number = in.nextInt();

} while(!isValidNumber(number));

return number;
}

protected boolean isValidNumber(Number number)
{
return number.intValue() >= minimumNumber.intValue() && number.intValue() <= maximumNumber.intValue();
}
}

Code
package NumberReader.IntegerReader;

import NumberReader.INumberReaderConfig;
import NumberReader.NumberNotFoundException;

public abstract class PromptlessIntegerReader extends IntegerReader {
public PromptlessIntegerReader(INumberReaderConfig config)
{
super(config);
}


public Integer readNumber(String msg) throws NumberNotFoundException {
Integer number = 0;

do
{
if(!in.hasNextInt())
throw new NumberNotFoundException("Integer not found.");
number = in.nextInt();

} while(!isValidNumber(number));

return number;
}

public abstract void readNumbers();

}

Code
package NumberReader.IntegerReader;

import NumberReader.INumberReaderConfig;
import java.io.InputStream;
import java.io.PrintStream;

public class StaticIntegerReaderConfig implements INumberReaderConfig
{
public Number getMaximumNumber() { return StaticIntegerReaderConstants.MAXIMUM_NUMBER; }
public Number getMinimumNumber() { return StaticIntegerReaderConstants.MINIMUM_NUMBER; }
public int getAmountOfNumbers() { return 2; }
public InputStream getInputer() { return StaticIntegerReaderConstants.INPUTER; }
public PrintStream getPrinter() { return StaticIntegerReaderConstants.PRINTER; }
}

Code
package NumberReader.IntegerReader;

import java.io.InputStream;
import java.io.PrintStream;

public class StaticIntegerReaderConstants
{
public static final Integer MAXIMUM_NUMBER = Integer.MAX_VALUE;
public static final Integer MINIMUM_NUMBER = Integer.MIN_VALUE;
public static final int AMOUNT_OF_NUMBERS = Integer.MAX_VALUE;
public static final InputStream INPUTER = System.in;
public static final PrintStream PRINTER = System.out;
}
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Dec 15 2014 10:17pm
Code
package NumberReader.IntegerReader;

import NumberReader.INumberReaderConfig;
import NumberReader.NumberNotFoundException;

public class AdditivePromptlessIntegerReader extends PromptlessIntegerReader {
public AdditivePromptlessIntegerReader(INumberReaderConfig config)
{
super(config);
}


public void readNumbers() {
int sum = 0;

while(true)
{
try
{
sum += readNumber("");

}catch(NumberNotFoundException nnfe)
{
break;
}
}

out.println(sum);

}

}

Code
package NumberReader.IntegerReader;

import NumberReader.NumberReaderApplicationBase;

public class AdditivePromptlessIntegerReaderApplication extends NumberReaderApplicationBase
{
AdditivePromptlessIntegerReaderApplication()
{
super(new AdditivePromptlessIntegerReaderFactory(), new StaticIntegerReaderConfig());
}
}

Code
package NumberReader.IntegerReader;

import NumberReader.INumberReader;
import NumberReader.INumberReaderConfig;
import NumberReader.INumberReaderFactory;

public class AdditivePromptlessIntegerReaderFactory implements INumberReaderFactory {

public INumberReader createNumberReader(INumberReaderConfig config) {
return new AdditivePromptlessIntegerReader(config);
}

}


This can be executed using the following Driver, using dependency injection to wire up the application for use

Code
package NumberReader.IntegerReader;

public class AdditivePromptlessIntegerReaderApplicationDriver
{
public static void main(String[] args)
{
new AdditivePromptlessIntegerReaderApplication().execute();
}
}



Edit: You may notice that I used an exception to modify control logic. This is poor design. If it is beneficial to you, I can refactor this immediately to provide a more robust solution to your problem.

This post was edited by Minkomonster on Dec 15 2014 10:19pm
Member
Posts: 6,504
Joined: Jun 18 2007
Gold: 13,428.00
Dec 15 2014 10:49pm
i give up i think i was hoping for an easy solution ;\
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Dec 15 2014 10:58pm
Quote (MW_Dream @ Dec 15 2014 11:49pm)
i give up i think i was hoping for an easy solution ;\


What's so difficult about it?
Member
Posts: 8,112
Joined: Sep 23 2006
Gold: 3,558.23
Member
Posts: 62,215
Joined: Jun 3 2007
Gold: 9,039.20
Dec 16 2014 04:38am
Forgot to escape the \'

Try

Code
print('oops, don\'t start with space or anything dum')


or

Code
print("oops, don't start with space or anything dum")
Member
Posts: 12,787
Joined: May 17 2013
Gold: 4,010.00
Dec 16 2014 01:48pm
Do you still need this? I made this in 2 minutes in C, can give you the program if you want, or if you have your own compiler:

Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(void){
int i = 0;
int addition = 0;


while (i >= 0){
scanf(" %d", &i);
addition += i;
printf("Your number after adding to the previous: %d\n", addition);
}
return 0;
}


With this you need to press enter after every number, and just quit using CTRL + C to close the terminal.

This post was edited by Klexmoo on Dec 16 2014 01:48pm
Go Back To Programming & Development Topic List
Prev12
Add Reply New Topic New Poll