Trouble trying to restart my Java program -
after looking numerous ways restart java program within itself, while loop seemed easiest option. here's example of basic calculator program i'm trying with:
import java.util.scanner; class { public static void main(string args[]){ boolean done = false; int oper; scanner input = new scanner(system.in); system.out.println("mcmackins calc v2.0 (now fewer crashes!)"); while (!done) { system.out.println("what operation? (0 quit, 1 add, 2 subtract, 3 multiply, 4 divide, 5 divide remainder, 6 average, 7 account interest):"); while (!input.hasnextint()){ system.out.println("enter valid integer."); input.next(); } oper = input.nextint(); switch (oper){ case 0: done = true; break; case 1: add addobject = new add(); addobject.getsum(); break; case 2: sub subobject = new sub(); subobject.getdifference(); break; case 3: times multobject = new times(); multobject.getproduct(); break; case 4: divide divobject = new divide(); divobject.getquotient(); break; case 5: remain remobject = new remain(); remobject.getremainder(); break; case 6: avg avgobject = new avg(); avgobject.getavg(); break; case 7: interest intobject = new interest(); intobject.getinterest(); break; default: system.out.println("invalid entry."); break; } } input.close(); } }
however, seems throw out nosuchelementexception @ end of first time through loop, , crashes program. function of class take initial input user determine class use, determine mathematical operation perform. works fine without while (!done)
loop.
example usage:
mcmackins calc v2.0 (now fewer crashes!) operation? (0 quit, 1 add, 2 subtract, 3 multiply, 4 divide, 5 divide remainder, 6 average, 7 account interest): 1 how many addends? 1 enter numbers now. 1 have entered 1 addend. sum is: 1.0 operation? (0 quit, 1 add, 2 subtract, 3 multiply, 4 divide, 5 divide remainder, 6 average, 7 account interest): enter valid integer. exception in thread "main" java.util.nosuchelementexception @ java.util.scanner.throwfor(unknown source) @ java.util.scanner.next(unknown source) @ a.main(a.java:13)
i've tried having other classes refer one, since main static method, cannot access way intended.
note i'm bit of beginner @ java, why program pretty simple, try keep simple if can be, or post code , in detail explain means can not fix problem, future ones well.
thank you!
edit:
the code formatted better within editor. braces came out in odd positions when posted here.
since apparently a
written correctly, add
class. clear up.
import java.util.scanner; public class add { public void getsum(){ scanner input = new scanner(system.in); double total, addend; int entries, count; total = 0; count = 0; system.out.println("how many addends?"); while (!input.hasnextint()){ system.out.println("enter valid integer."); input.next(); } entries = input.nextint(); system.out.println("enter numbers now."); while (count < entries){ while (!input.hasnextdouble()){ system.out.println("enter valid number."); input.next(); } addend = input.nextdouble(); total = total + addend; count++; if (count == 1){ system.out.println("you have entered " + count + " addend."); }else if (count > entries){ system.out.println("you have entered many addends! contact program developer."); }else{ system.out.println("you have entered " + count + " addends."); } } system.out.println("the sum is: " + total); input.close(); } }
public static void main(string args[]){ boolean done = false; int oper; scanner input = new scanner(system.in); system.out.println("mcmackins calc v2.0 (now fewer crashes!)"); while (!done) { system.out.println("what operation? (0 quit, 1 add, 2 subtract, 3 multiply, 4 divide, 5 divide remainder, 6 average, 7 account interest):"); while (!input.hasnextint()){ system.out.println("enter valid integer."); input.next(); } oper = input.nextint(); switch (oper){ case 0: done = true; break; case 1: system.out.println("1"); break; case 2: system.out.println("2"); break; case 3: system.out.println("3"); break; case 4: system.out.println("4"); break; case 5: system.out.println("5"); break; case 6: system.out.println("6"); break; case 7: system.out.println("7"); break; default: system.out.println("invalid entry."); break; } } input.close(); }
this seemed work me perhaps error own classes (add, divide) etc.
also, it's best keep convention when creating own classes capitalizing first letter e.g. "add" should "add".
you make little bit easier read building general "operations" class holds add method, subtract method etc.
edit: try add method:
public static int add() { scanner s = new scanner(system.in); int counter = 0; system.out.println("how many numbers add?"); int numcount = s.nextint(); for(int = 0; < numcount; i++) { system.out.println("enter number"); counter += s.nextint(); } return counter; }
Comments
Post a Comment