実行しようとしているプログラムがありますが、スキャナー入力を終了する方法がわかりません。割り当てには、Windows では (ctrl+z) を、Linux では (ctrl+d) を押すだけでよいというメモがありますが、私は mac を使用しており、試してみましたが機能しませんでした。(cmd +d も試しました) ) および (cmd+z) が機能しませんでした。これは私のプログラムです:
package F1;
import java.io.PrintStream;
import java.util.Scanner;
public class HatzelKlatzer{
public static final int STARTING_YEAR=1950,
FINAL_YEAR=2050;
PrintStream out;
HatzelKlatzer(){
out=new PrintStream(System.out);
}
//method which will print the percentage
void printPercentage(double percentage){
out.printf("The percentage is: %d",percentage);
}
//TODO Make a method which will read the input if its in range and returns the result
int readInRange(Scanner input,int startDate,int endDate){
int result=input.nextInt();
if(result>endDate || result<startDate){
System.exit(1);
}
return result;
}
//TODO method if month is odd
Boolean oddMonth(Scanner input){
readInRange(input,1,31);
int month=readInRange(input,1,12);
readInRange(input,STARTING_YEAR,FINAL_YEAR);
return month%2 !=0;
}
void start()
{
Scanner in=new Scanner(System.in);
int seizures=0,
numberInOddMonths=0;
//while loop to count the seizures and months odd
while(in.hasNext()){
String date=in.nextLine();
Scanner dateReader=new Scanner(date);
if(oddMonth(dateReader)){
numberInOddMonths +=1;
}
seizures +=1;
}
//calculating the percentage
double percentage=((double)numberInOddMonths/seizures)*100 ;
printPercentage(percentage);
}
public static void main(String[] args){
new HatzelKlatzer().start();
}
}
そして、それは次のような入力を取ります
12 1 2005
1 1 1995
....etc
しかし、これが入力の終わりであることをスキャナーに知らせる方法がわかりません。どうすればできるのか教えてください...私はただの初心者です。
ありがとう
ネコ。