Clover Coverage Report - ali Coverage Report
Coverage timestamp: su marras 1 2009 19:10:37 EET
../../../../img/srcFileCovDistChart6.png 45% of files have more coverage
48   252   22   3,43
8   89   0,46   7
14     1,57  
2    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  Syotto       Line # 17 44 19 48,4% 0.484375
  Syotto.RiviLukija       Line # 24 4 3 83,3% 0.8333333
 
  (4)
 
1    package fi.jyu.mit.ohj2;
2    import java.io.*;
3   
4    /**
5    * <p>Title: Syotto</p>
6    * <p>Description: Aliohjelmia tietojen lukemiseen päätteeltä</p>
7    * <p>Lukeminen on vaihdettu käyttämään omaa RiviLukijaa jotta
8    * syötön uudelleensuuntaus toimisi paremmin</p>
9    * <p>Copyright: Copyright (c) 2003</p>
10    * <p>Company: jyu </p>
11    * @author Vesa Lappalainen
12    * @version 1.0/08.01.2003
13    * @version 1.1/25.01.2003
14    * @version 1.2/11.03.2007
15    */
16   
 
17    public class Syotto {
18   
19    /**
20    * Lukija joka lukee yden rivin InputStreamista
21    * @author vesal
22    * @version 11.3.2007
23    */
 
24    public static class RiviLukija {
25    /**
26    * Jos edellinen merkki on CR, niin seuraava LF unohdetaan
27    */
28    //private boolean lastCR = false;
29    //private InputStream in;
30    private final BufferedReader inb;
31   
32    /**
33    * Alustetaan lukija lukemaan tiettyä tietovirtaa
34    * @param in tietovirta jota luetaan
35    */
 
36  11 toggle public RiviLukija(InputStream in) {
37    //this.in = in;
38  11 inb = new BufferedReader(new InputStreamReader(in));
39    }
40   
41    /**
42    * Luetaan rivi tietovirrasta. rivinvaihtona kelpaa
43    * cr, lf tai crlf
44    * @return luettu rivi tai null jos tietovirta "loppu"
45    */
 
46  15 toggle public String lueRivi() {
47    /*
48    StringBuffer sb = new StringBuffer();
49    int n = 0;
50    while ( true ) {
51    int c;
52    try {
53    c = in.read();
54    if ( c < 0 ) if ( n == 0 ) return null; else break;
55    n++;
56    if ( c == '\r' ) { lastCR=true; break; }
57    if ( c == '\n' ) if ( lastCR ) { lastCR = false; continue; } else break;
58    lastCR = false;
59    } catch (IOException e) {
60    break;
61    }
62    sb.append((char)c);
63    }
64    return sb.toString();
65    */
66   
67  15 try {
68  15 return inb.readLine();
69    } catch (IOException e) {
70  0 return "";
71    }
72    }
73   
74    }
75   
76    /**
77    * Tietovirran lukija
78    */
79    private static RiviLukija lukija = new RiviLukija(System.in);
80   
81    /**
82    * Alustaa sisäisen lukijan uudelleen mahdollisen suuntauksen jälkeen.
83    *
84    */
 
85  10 toggle public static void alusta() {
86  10 lukija = new RiviLukija(System.in);
87    }
88   
89   
90    /**
91    * Luetaan seuraava rivi System.in-tieotovirrasta
92    * @return luettu rivi
93    */
 
94  15 toggle public static String lueRivi() {
95  15 return lukija.lueRivi();
96    }
97   
98   
99    /**
100    * Aliohjelmalla kysytään käyttäjältä arvo merkkijonolle.
101    * Jos tulOletus on tosi, tulostetaan oletusarvo.
102    * Jos käyttäjä painaa pelkästään ret, palautetaan oletusarvo
103    *
104    * @param kysymys käyttäjälle tulostettava kysymys
105    * @param oletus arvo jota käytetään jos painetaan pelkkä ret
106    * @param tulOletus tulostetaanko oletus käyttäjälle
107    * @return käyttäjän syöttämä merkkijono
108    */
 
109  15 toggle public static String kysy(String kysymys, String oletus, boolean tulOletus) {
110    //BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
111  15 while ( true ) {
112  15 System.out.print(kysymys);
113  15 if ( tulOletus ) System.out.print(" (" + oletus + ")");
114  15 System.out.print(" >");
115  15 String s = "";
116    //try {
117    //s = in.readLine();
118  15 s = lueRivi();
119    //} catch (IOException ex) {
120    // continue;
121    //}
122  15 if ( ( s == null ) || ( s.equals("") ) ) return oletus;
123  10 return s;
124    }
125   
126    }
127   
128    /**
129    * Aliohjelmalla kysytään käyttäjältä arvo merkkijonolle.
130    * Tulostetaan oletusarvo.
131    * Jos käyttäjä painaa pelkästään ret, palautetaan oletusarvo
132    *
133    * @param kysymys käyttäjälle tulostettava kysymys
134    * @param oletus arvo jota käytetään jos painetaan pelkkä ret
135    * @return käyttäjän syöttämä merkkijono
136    */
 
137  0 toggle public static String kysy(String kysymys, String oletus) {
138  0 return kysy(kysymys,oletus,true);
139    }
140   
141    /**
142    * Aliohjelmalla kysytään käyttäjältä arvo merkkijonolle.
143    * Ei tulosteta oletusarvoa.
144    *
145    * @param kysymys käyttäjälle tulostettava kysymys
146    * @return käyttäjän syöttämä merkkijono
147    */
 
148  9 toggle public static String kysy(String kysymys) {
149  9 return kysy(kysymys,"",false);
150    }
151   
152    /**
153    * Kysytään reaaliluku. Jos annetaan ei-luku, kysytään uudelleen.
154    * @param kysymys näytölle tulostettava kysymys
155    * @param oletus arvo jota käytetään jos painetaanpelkkä Ret
156    * @param tulOletus tulostetaanko oletus käyttäjälle
157    * @return käyttäjän kirjoittama reaaliluku
158    */
 
159  0 toggle public static double kysy(String kysymys, double oletus, boolean tulOletus) {
160  0 while ( true ) {
161  0 String s = kysy(kysymys,""+oletus,tulOletus);
162  0 s = s.trim();
163  0 if ( s.length() == 0 ) return oletus;
164  0 try {
165  0 return Double.parseDouble(s);
166    } catch (NumberFormatException ex) {
167  0 System.out.println("Ei numero: \"" + s + "\"");
168    }
169    }
170    }
171   
172    /**
173    * Kysytään reaaliluku. Jos annetaan ei-luku, kysytään uudelleen.
174    * Oletusarvo tulostetaan sulkuihin.
175    * @param kysymys näytölle tulostettava kysymys
176    * @param oletus arvo jota käytetään jos painetaanpelkkä Ret
177    * @return käyttäjän kirjoittama reaaliluku
178    */
 
179  0 toggle public static double kysy(String kysymys, double oletus) {
180  0 return kysy(kysymys,oletus,true);
181    }
182   
183    /**
184    * Kysytään reaaliluku. Jos annetaan ei-luku, kysytään uudelleen.
185    * Ei tulosteta oletusta.
186    * @param kysymys näytölle tulostettava kysymys
187    * @return käyttäjän kirjoittama reaaliluku
188    */
 
189  0 toggle public static double kysyDouble(String kysymys) {
190  0 return kysy(kysymys,0.0,false);
191    }
192   
193    /**
194    * Kysytään kokonaisluku. Jos annetaan ei-luku, kysytään uudelleen.
195    * @param kysymys näytölle tulostettava kysymys
196    * @param oletus arvo jota käytetään jos painetaanpelkkä Ret
197    * @param tulOletus tulostetaanko oletus käyttäjälle
198    * @return käyttäjän kirjoittama kokonaisluku
199    */
 
200  6 toggle public static int kysy(String kysymys, int oletus, boolean tulOletus) {
201  6 while ( true ) {
202  6 String s = kysy(kysymys,""+oletus,tulOletus);
203  6 s = s.trim();
204  0 if ( s.length() == 0 ) return oletus;
205  6 try {
206  6 return Integer.parseInt(s);
207    } catch (NumberFormatException ex) {
208  0 System.out.println("Ei kokonaisluku: \"" + s + "\"");
209    }
210    }
211    }
212   
213    /**
214    * Kysytään kokonaisluku. Jos annetaan ei-luku, kysytään uudelleen.
215    * Oletusarvo tulostetaan sulkuihin.
216    * @param kysymys näytölle tulostettava kysymys
217    * @param oletus arvo jota käytetään jos painetaanpelkkä Ret
218    * @return käyttäjän kirjoittama kokonaisluku
219    */
 
220  6 toggle public static int kysy(String kysymys, int oletus) {
221  6 return kysy(kysymys,oletus,true);
222    }
223   
224    /**
225    * Kysytään kokonaisluku. Jos annetaan ei-luku, kysytään uudelleen.
226    * Ei tulosteta oletusta.
227    * @param kysymys näytölle tulostettava kysymys
228    * @return käyttäjän kirjoittama kokonaisluku
229    */
 
230  0 toggle public static int kysyInt(String kysymys) {
231  0 return kysy(kysymys,0,false);
232    }
233   
234   
235   
236    /**
237    * Testataan kysy-metodeja
238    * @param args ei käytössä
239    */
 
240  0 toggle public static void main(String[] args) {
241  0 String s = kysy("Anna jono","Kissa");
242  0 System.out.println("Jono oli: \"" + s + "\"");
243  0 String s2 = kysy("Anna jono");
244  0 System.out.println("Jono oli: \"" + s2 + "\"");
245  0 double d = kysy("Anna reaaliluku",3.14);
246  0 System.out.println("Luku oli: \"" + d + "\"");
247  0 int i = kysyInt("Anna kokonaisluku");
248  0 System.out.println("Luku oli: \"" + i + "\"");
249  0 d = kysyDouble("Anna reaaliluku");
250  0 System.out.println("Luku oli: \"" + d + "\"");
251    }
252    }