TheRealL

Untitled

Nov 23rd, 2011
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 9.89 KB | None | 0 0
  1.  
  2. 3d2
  3. < //Skrevet av Jan-kenneth Bekkemellem
  4. 4a4,6
  5. > import java.io.FileNotFoundException;
  6. > import java.util.ArrayList;
  7. > import java.util.InputMismatchException;
  8. 8c10,27
  9. < public class Innlevering3 {
  10. ---
  11. > /**
  12. >  * Innlevering 3 - Oppgave 1
  13. >  *
  14. >  * Du skal lage et program som skal teste brukeren i bøyning av engelske verb.
  15. >  *
  16. >  * INFORMASJON TIL SENSOR: verb.txt må ligge i mappen som Verb.java blir bygget
  17. >  * til. Ellers må du skrive fil stien når du spesifiserer verb filen. Eks: Oppgi
  18. >  * navnet på verb filen: nith/blystad/innlevering3/verb.txt
  19. >  *
  20. >  * @author Arne-Christian Blystad
  21. >  *
  22. >  */
  23. > public class Verb {
  24. >
  25. >   private static Scanner              verbFile, input;
  26. >   private static ArrayList<String[]>  verbs       = new ArrayList<String[]>();
  27. >   private static Random               random      = new Random(System.currentTimeMillis());
  28. >   private static int                  numRounds   = 0;
  29. 11,14c30,49
  30. <       askForFile();
  31. <   }
  32. <
  33. <   public static void askForFile() {
  34. ---
  35. >       input = new Scanner(System.in);
  36. >       verbFile = getFile(
  37. >               "Oppgi navnet på verb filen", "Kan ikke finne filen. Vennligst skriv inn navnet på en fil som allerede eksisterer.");
  38. >
  39. >       /*
  40. >        * Bryt ned fila, linje for linje til en Array
  41. >        *
  42. >        * en array rad inneholder 3 arrayer. Feks vil
  43. >        *
  44. >        * Arrays.toString(verbs.get(0)) spytte ut [Be, Was, Been]
  45. >        */
  46. >       while (verbFile.hasNextLine())
  47. >           verbs.add(verbFile.nextLine().split("\\s+"));
  48. >
  49. >       System.out.println("\n");
  50. >
  51. >       System.out.println("Velkommen til Verb-o-nator 2000 som tester deg i bøyning av engelske verb.");
  52. >       System.out.printf("Du kan velge opp til %d å bli testet i\n", verbs.size());
  53. >       System.out.println("Du vil få en vurdering når testen er ferdig.");
  54. >       System.out.println();
  55. 16,35c51,61
  56. <       try {
  57. <           Scanner input = new Scanner(System.in);
  58. <           System.out.print("Oppgi navn på verbfil: ");
  59. <           String fileName = input.next();
  60. <           Scanner textInput = new Scanner(new File(fileName));
  61. <           lineSkip();
  62. <           lineSkip();
  63. <           lineSkip();
  64. <           System.out
  65. <                   .println("Velkommen til programmet som tester deg i bøyning av engelske verb.\nDu kan velge opp til 88 verb å bli testet i.\nDu vil få en vurdering når testen er ferdig.");
  66. <
  67. <           Random rand = new Random();
  68. <           String anwser;
  69. <           String fasit = null;
  70. <           double score = 0;
  71. <           String name = null;
  72. <           int antallVerb = 0;
  73. <           String tryit;
  74. <           lineSkip();
  75. <           do {
  76. ---
  77. >       /*
  78. >        * Skap en uendlig loop som kun stopper når brukeren er ferdig (finished
  79. >        * = true)
  80. >        */
  81. >       boolean finished = false;
  82. >       while (!finished) {
  83. >           /*
  84. >            * Spør om brukeren vil være med å spille. Første gang så er
  85. >            * meldingen forskjellig fra de andre gangene.
  86. >            */
  87. >           if (numRounds == 0)
  88. 37,38c63,64
  89. <               tryit = input.next();
  90. <           } while (!tryit.equalsIgnoreCase("ja") && !tryit.equalsIgnoreCase("nei"));
  91. ---
  92. >           else
  93. >               System.out.print("Ønsker du å prøve dette en gang til? (ja/nei): ");
  94. 40,41c66,80
  95. <           lineSkip();
  96. <           double sumScore;
  97. ---
  98. >           String answerYesNo = input.next();
  99. >           if (answerYesNo.equalsIgnoreCase("ja")) {
  100. >               /*
  101. >                * Yay, brukern vil spille, lets play then!
  102. >                */
  103. >               int numVerbsTest = 0;
  104. >               boolean numVerbsTestCorrect = false;
  105. >
  106. >               /*
  107. >                * Hvor mange verb vil brukeren testes i? Om det er fler enn det
  108. >                * filen inneholder, si ifra til brukeren.
  109. >                */
  110. >               while (!numVerbsTestCorrect) {
  111. >                   numVerbsTest = getPositiveInt(
  112. >                           "Oppgi ønsket antall verb", String.format("Antall verb må være et tall mellom 1 og %d", verbs.size()));
  113. 43,49c82,84
  114. <           while (tryit.equalsIgnoreCase("ja")) {
  115. <               score = 0;
  116. <               do
  117. <                   try {
  118. <                       System.out.print("Oppgi antall verb: ");
  119. <                       input.nextLine();
  120. <                       antallVerb = input.nextInt();
  121. ---
  122. >                   if (numVerbsTest > 0 && numVerbsTest <= verbs.size())
  123. >                       numVerbsTestCorrect = true;
  124. >               }
  125. 51,52c86,110
  126. <                   } catch (Exception e) {
  127. <                       System.out.println("Skriv et heltall.");
  128. ---
  129. >               /*
  130. >                * Etabler variabler for antall spørsmål og poeng brukeren har.
  131. >                */
  132. >               int numQuestions = 0, numPoints = 0;
  133. >               for (int i = 0; i < numVerbsTest; i++) {
  134. >                   numQuestions++;
  135. >
  136. >                   /*
  137. >                    * Finn det svaret som skal være korrekt.
  138. >                    */
  139. >                   int rand = random.nextInt(2);
  140. >                   String correctAnswer = verbs.get(i)[rand];
  141. >
  142. >                   /*
  143. >                    * Skriv ut verb, ett av de tre verbene skal tilfeldigvis
  144. >                    * erstattes av ...
  145. >                    */
  146. >                   for (int x = 0; x < 3; x++) {
  147. >                       if (x != rand)
  148. >                           System.out.print(verbs.get(i)[x]);
  149. >                       else
  150. >                           System.out.print("...");
  151. >
  152. >                       if (x != 2)
  153. >                           System.out.print(" - ");
  154. 54d111
  155. <               while (antallVerb <= 0);
  156. 56,68d112
  157. <               lineSkip();
  158. <               for (int j = 0; j < antallVerb && textInput.hasNext(); j++) {
  159. <                   int hidden = rand.nextInt(3) + 1;
  160. <                   for (int i = 1; i <= 3; i++)
  161. <                       if (hidden == i) {
  162. <                           System.out.print(" ... ");
  163. <                           fasit = textInput.next();
  164. <                       }
  165. <                       else {
  166. <                           String file = textInput.next();
  167. <                           System.out.print(file);
  168. <                           System.out.print(" ");
  169. <                       }
  170. 70,73c114,117
  171. <                   System.out.print("Skriv formen som mangler: ");
  172. <                   anwser = input.next();
  173. <                   if (fasit.equalsIgnoreCase(anwser))
  174. <                       score++;
  175. ---
  176. >
  177. >                   String answer = getString("Skriv inn formen som mangler");
  178. >                   if (answer.equalsIgnoreCase(correctAnswer))
  179. >                       numPoints++; // +1 poeng
  180. 75c119
  181. <                       System.out.println("Feil: " + fasit);
  182. ---
  183. >                       System.out.println("Feil. Riktig svar var: " + correctAnswer);
  184. 77,82c121,134
  185. <               lineSkip();
  186. <               System.out.print("Oppgi navnet ditt: ");
  187. <               input.nextLine();
  188. <               name = input.nextLine();
  189. <               lineSkip();
  190. <               sumScore = (score) / antallVerb * 100;
  191. ---
  192. >
  193. >               String name = getString("\n" + "Oppgi navnet ditt");
  194. >               double score = ((double) numPoints / (double) numQuestions) * 100;
  195. >
  196. >               /*
  197. >                * Regn ut karakter basert på hvor mange prosent riktig brukeren
  198. >                * har.
  199. >                */
  200. >               String grade = getGrade(score);
  201. >
  202. >               /*
  203. >                * Skriv ut highscores
  204. >                */
  205. >               System.out.println();
  206. 84,97c136,137
  207. <               System.out.println("Score: " + sumScore + "%");
  208. <               if (sumScore >= 90)
  209. <                   System.out.println("Karakter: A");
  210. <               else if (sumScore >= 80)
  211. <                   System.out.println("B");
  212. <               else if (sumScore >= 60)
  213. <                   System.out.println("C");
  214. <               else if (sumScore >= 40)
  215. <                   System.out.println("D");
  216. <               else if (sumScore >= 20)
  217. <                   System.out.println("E");
  218. <               else
  219. <                   System.out.println("F");
  220. <               lineSkip();
  221. ---
  222. >               System.out.println(String.format("Score: %.2f", score) + "%");
  223. >               System.out.println(String.format("Karakter: %s", grade) + "\n");
  224. 99,107c139
  225. <               if (tryit.equalsIgnoreCase("ja")) {
  226. <                   System.out.print("Vil du prøve igjen: ");
  227. <                   tryit = input.next();
  228. <                   lineSkip();
  229. <               }
  230. <               else if (tryit.equalsIgnoreCase("nei"))
  231. <                   System.out.print("Try again soon!");
  232. <               else
  233. <                   System.out.print("Skriv ja eller nei");
  234. ---
  235. >               numRounds++;
  236. 109c141,144
  237. <
  238. ---
  239. >           else if (answerYesNo.equalsIgnoreCase("nei"))
  240. >               finished = true;
  241. >           else
  242. >               System.out.println("Du må svare enten ja, eller nei.");
  243. 112,114c147,169
  244. <       catch (Exception e) {
  245. <           e.printStackTrace();
  246. <       }
  247. ---
  248. >       /* Si hadebra */
  249. >       System.out.println("Takk for at du spilte Verb-o-nator 2000.");
  250. >   }
  251. >
  252. >   /**
  253. >    * @param score
  254. >    *            Poengsum i prosent
  255. >    * @return Karakter basert på poengsum
  256. >    */
  257. >   private static String getGrade(double score) {
  258. >       String grade = new String();
  259. >       if (score < 50)
  260. >           grade = "F";
  261. >       else if (score < 65)
  262. >           grade = "E";
  263. >       else if (score < 75)
  264. >           grade = "D";
  265. >       else if (score < 83)
  266. >           grade = "C";
  267. >       else if (score < 89)
  268. >           grade = "B";
  269. >       else
  270. >           grade = "A";
  271. 115a171
  272. >       return grade;
  273. 118,119c174,235
  274. <   public static void lineSkip() {
  275. <       System.out.println();
  276. ---
  277. >   /**
  278. >    * @param message
  279. >    *            Melding som blir skrevet ut, før brukeren skriver inn input.
  280. >    * @return input som blir skrevet inn etter setningen
  281. >    */
  282. >   private static String getString(String message) {
  283. >       System.out.print(message + ": ");
  284. >       String string = input.next();
  285. >       return string;
  286. >   }
  287. >
  288. >   /**
  289. >    * @param message
  290. >    *            Melding som blir skrevet ut, før brukeren skriver inn input.
  291. >    * @param errorMessage
  292. >    *            Melding som blir skrevet ut, om filen ikke finnes.
  293. >    * @return Filen lastet inn i en scanner som kan bli lest
  294. >    */
  295. >   private static Scanner getFile(String message, String errorMessage) {
  296. >       boolean correctInput = false;
  297. >
  298. >       Scanner scanner = null;
  299. >       while (!correctInput)
  300. >           try {
  301. >               System.out.print(message + ": ");
  302. >               File file = new File(input.next());
  303. >               scanner = new Scanner(file);
  304. >               correctInput = true;
  305. >           } catch (FileNotFoundException e) {
  306. >               System.out.println(errorMessage);
  307. >           }
  308. >
  309. >       return scanner;
  310. >   }
  311. >
  312. >   /**
  313. >    * @param message
  314. >    *            Melding som blir skrevet ut, før brukerne skriver inn input.
  315. >    * @param errorMessage
  316. >    *            Melding som blir skrevet ut, om verdien ikke er en positiv
  317. >    *            integer eller ikke en integer i det hele tatt.
  318. >    * @return En integer som er positiv.
  319. >    */
  320. >   private static int getPositiveInt(String message, String errorMessage) {
  321. >       int integer = 0;
  322. >       boolean correctInput = false;
  323. >
  324. >       while (!correctInput && integer <= 0) {
  325. >           System.out.print(message + ": ");
  326. >           try {
  327. >               integer = input.nextInt();
  328. >
  329. >               if (integer <= 0)
  330. >                   System.out.println(errorMessage);
  331. >               else
  332. >                   correctInput = true;
  333. >           } catch (InputMismatchException e) {
  334. >               System.out.println(errorMessage);
  335. >               input.next();
  336. >           }
  337. >       }
  338. >       return integer;
  339.  
  340.  
Advertisement
Add Comment
Please, Sign In to add comment