私はJavaを初めて使用するので、それが非常に小さな間違いである場合はご容赦ください
。私のコードは次のとおりです。
import java.io.*;
public class election
{
public static void main(String args[])
{
boolean x=false;
Ballot ballot=new Ballot();
int n;
while(x!=true)
{
System.out.println("Cast your vote to(1-5): ");
try
{
n=System.in.read();
System.out.flush();
ballot.add(n);
System.out.println("Enter 0 to exit, enter 1 to vote again: ");
n = System.in.read();
if(n==0)
{
x=true;
}
else
{
x=false;
}
}
catch(IOException e)
{
System.out.println("I/O Error");
System.exit(1);
}
}
}
}
class Ballot
{
int votes,spoilt;
int cand[] = new int[5];
//methods
void add(int n)
{
votes=votes+1;
if(n <= 5 && n>=1)
{
cand[n-1]=cand[n-1]+1;
}
else
{
spoilt = spoilt + 1;
}
}
void display()
{
System.out.println("Total votes cast: " + votes);
for(int i=0;i<5;i++)
{
System.out.println("Candidate " + (i+1) + ": " + cand[i]);
}
System.out.println("Spoilt: " + spoilt);
System.out.println("Valid votes: " + (votes-spoilt));
}
Ballot()
{
votes=0;
spoilt=0;
for(int i=0;i<5;i++)
{
cand[i]=0;
}
}
}
コンパイル後に実行すると、18行目(n = System.in.read())がスキップされます。
私が得る出力はこれです:
(1-5)に投票します:
1終了するには0を入力し、再度投票するには1を入力し
ます:(1-5)に投票します:
2終了するには0を入力し、再度投票するには1を入力します:
(1に投票します-5):
^ C
の値は、プログラムを無限ループにするn
notです。read()
ご協力ありがとうございました。