52
Advanced Programming in Java Sadegh Aliakbary Sharif University of Technology Fall 2012

Advanced Programming in Java

Embed Size (px)

DESCRIPTION

Advanced Programming in Java. Sadegh Aliakbary Sharif University of Technology Fall 2012. Agenda. Review User input Scanner Strong type checking Other flow-control structures switch break & continue Strings Arrays. Review. Variables Primitive data types Operators Methods - PowerPoint PPT Presentation

Citation preview

Advanced Programming in Java

Advanced Programming in JavaSadegh AliakbarySharif University of TechnologyFall 2012AgendaReviewUser inputScannerStrong type checkingOther flow-control structuresswitchbreak & continueStringsArrays

Fall 2012Sharif University of Technology2ReviewVariablesPrimitive data typesOperatorsMethodsParameter passingCall by valueConditionsIf, else, else ifLoopswhiledo-whileforFall 2012Sharif University of Technology3User InputPrint on consoleSystem.out.printlnHow to read from console?ScannerExample:Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();double d = scanner.nextDouble();

Fall 2012Sharif University of Technology4ExampleScanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();long pow = power(a,b);System.out.println(pow);Fall 2012Sharif University of Technology5Type CheckingJava has a strong type-checking mechanismSome assignment is not permitted

int intVal = 2;long longVal =12;

intVal = longVal;Syntax ErrorlongVal = intVal;OKintVal = (int)longVal; OK (Type Casting)Fall 2012Sharif University of Technology6Direct Type ConversionThe arrows are transitiveAll other conversions need an explicit castboolean is not convertiblechar is a special typeFall 2012Sharif University of Technology7bytecharshortintlongfloatdoublebooleanType Conversion GridFall 2012Sharif University of Technology8

Reference: http://docstore.mik.ua/orelly/java-ent/jnut/ch02_04.htm#javanut3-ch-2-tab-4

8Type ConversionFall 2012Sharif University of Technology9N : the conversion cannot be performedY : the conversion is performed automatically and implicitly by JavaC : the conversion is a narrowing conversion and requires an explicit castY* : the conversion is an automatic widening conversion, but that some of the least significant digits of the value may be lost by the conversion

9Examplei = 123456789; //a big integerf = i; //f stores and approximation of iSystem.out.println(f);//output : 1.23456792E8i = (int) f;System.out.println(i); //output : 123456792

floating-point types are approximations of numbers They cannot always hold as many significant digits as the integer typesFall 2012Sharif University of Technology10Floating Point, Some NotesDouble.NaNdouble nan = 0.0/0.0;Infinitydouble inf = Double.MAX_VALUE*2;Negative infinitydouble inf = Double.MAX_VALUE*(-2);Double.NEGATIVE_INFINITYDouble.POSITIVE_INFINITYFormatting a doubleSystem.out.format("min double = %5.2f%n", ff);ComparisonCompare doublesUsing == with float or double is an anti-patternAn infinite loop:for (float f = 10f; f != 0; f -= 0.1) {System.out.println(f);}

Fall 2012Sharif University of Technology12Numeric AssignmentsNumeric SuffixDouble d = 123.54d;Float f = 123f;Long l = 123123 l; byte b = 127;//NothingAssignment OverflowLarge long to intLower bits are usedNo runtime errorLarge double to integerBrings a max intSwitch statementAn alternative to if-elseBetter structureBefore Java 1.7When the condition is a numeric or an ordinal variableWith Java 1.7Strings are also allowedFall 2012Sharif University of Technology14switch exampleswitch (i) {case 1:System.out.println("1");break;case 2:System.out.println("2");break;default:System.out.println("default");}

Fall 2012Sharif University of Technology15Scanner scanner = new Scanner(System.in);boolean again = true;while(again){System.out.println("1: Play");System.out.println("2: Setting:");System.out.println("3: Exit");System.out.print("Enter Your Choice:");int i = scanner.nextInt();switch (i) {case 1:play();break;case 2:setting();break;case 3:again = false;break;default:System.out.println("Enter a valid number");}}Fall 2012Sharif University of Technology16BreakBreaks the execution of a loop

while(true){int nextInt = scanner.nextInt();if(nextInt==0)break;...}Fall 2012Sharif University of Technology17ContinueStops the execution of the body of the loop and continues from the beginning of the loop

for(int i=0;i