用Java扫描程序扫描奇偶数
我尝试只将偶数添加到用Java扫描程序扫描奇偶数,java,java.util.scanner,Java,Java.util.scanner,我尝试只将偶数添加到ArrayList。我认为使用扫描仪处理文件是最合适的工具。应在控制台中写入文件的路径。我还使用了两种最流行的方法来定义偶数。 问题是-我的ArrayList中不仅添加了偶数。 这是我的代码: BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in)); InputStream inputStream = null; List<Integer> myInts = ne
ArrayList
。我认为使用扫描仪处理文件是最合适的工具。应在控制台中写入文件的路径。我还使用了两种最流行的方法来定义偶数。
问题是-我的ArrayList
中不仅添加了偶数。
这是我的代码:
BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
InputStream inputStream = null;
List<Integer> myInts = new ArrayList<Integer>();
String filePath = null;
try {
filePath = bfReader.readLine();
inputStream = new FileInputStream(filePath);
} catch (IOException e) { }
Scanner scanner = new Scanner(inputStream);
while (scanner.hasNext()) {
if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1)
myInts.add(scanner.nextInt());
// if ((scanner.nextInt() & 1) == 0)
// myInts.add(scanner.nextInt());
}
for (Integer x : myInts) {
System.out.println(x);
}
BufferedReader bfReader=新的BufferedReader(新的InputStreamReader(System.in));
InputStream InputStream=null;
List myInts=new ArrayList();
字符串filePath=null;
试一试{
filePath=bfReader.readLine();
inputStream=新文件inputStream(文件路径);
}捕获(IOE){}
扫描仪=新扫描仪(inputStream);
while(scanner.hasNext()){
if((scanner.nextInt()%2)==0&&scanner.nextInt()!=1)
添加(scanner.nextInt());
//if((scanner.nextInt()&1)==0)
//添加(scanner.nextInt());
}
用于(整数x:myInts){
系统输出println(x);
}
我想我误解了扫描仪
很高兴收到任何答复 原因是每次调用nextInt()
都会从输入中读取新的整数
下面是一个经过修改的代码段,说明了您可能希望尝试的内容:
Scanner scanner = new Scanner(inputStream);
int myInt;
while (scanner.hasNext()) {
myInt = scanner.nextInt();
if ((myInt % 2) == 0 && myInt != 1)
myInts.add(myInt);
}
有关更多信息,请查看。原因是每次调用nextInt()
都会从输入中读取新整数
下面是一个经过修改的代码段,说明了您可能希望尝试的内容:
Scanner scanner = new Scanner(inputStream);
int myInt;
while (scanner.hasNext()) {
myInt = scanner.nextInt();
if ((myInt % 2) == 0 && myInt != 1)
myInts.add(myInt);
}
有关更多信息,请查看。每当您调用nextInt
,它都会从扫描仪中取出一个项目。这意味着一次通过循环将删除多达三个项目,并且添加的项目与正在进行检查的项目不同
假设您的输入是4 3 1
您的代码将执行以下操作:
if ((scanner.nextInt() /* 4 */ % 2) == 0 && scanner.nextInt() /* 3 */ != 1)
myInts.add(scanner.nextInt() /* 1 */);
并将1
添加到您的列表中
您应该将代码更改为:
while (scanner.hasNext())
{
int value = scanner.nextInt();
if ((value % 2) == 0)
myInts.add(value);
}
这将只读取一个值,并在所有比较中使用它。每次调用nextInt
,它都会从扫描仪中取出一个项目。这意味着一次通过循环将删除多达三个项目,并且添加的项目与正在进行检查的项目不同
假设您的输入是4 3 1
您的代码将执行以下操作:
if ((scanner.nextInt() /* 4 */ % 2) == 0 && scanner.nextInt() /* 3 */ != 1)
myInts.add(scanner.nextInt() /* 1 */);
并将1
添加到您的列表中
您应该将代码更改为:
while (scanner.hasNext())
{
int value = scanner.nextInt();
if ((value % 2) == 0)
myInts.add(value);
}
这将只读取一个值,并在所有比较中使用它。每次调用scanner.nextInt()
时,您都会得到另一个号码。如果要多次引用同一数字,请指定一个变量
此外,在检查了一个数字是否为偶数后,您也不必检查它是否不是数字1
while (scanner.hasNext()) {
int n = scanner.nextInt();
if (n%2 == 0) {
myInts.add(n);
}
}
每次你打电话给scanner.nextInt()
你都会得到另一个号码。如果要多次引用同一数字,请指定一个变量
此外,在检查了一个数字是否为偶数后,您也不必检查它是否不是数字1
while (scanner.hasNext()) {
int n = scanner.nextInt();
if (n%2 == 0) {
myInts.add(n);
}
}
这里的问题在于
if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1)
每次调用scanner.nextInt()
,都会使用下一个输入。因此,您最终会丢弃大部分输入。要解决这个问题,您需要
while (scanner.hasNext())
{
int i = scanner.nextInt;
if ((i % 2) == 0 && i != 1)
myInts.add(i);
}
这将正确地消耗输入,并且应该正常工作。
包含此信息的扫描仪javadoc位于此处:此处的问题在于
if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1)
每次调用scanner.nextInt()
,都会使用下一个输入。因此,您最终会丢弃大部分输入。要解决这个问题,您需要
while (scanner.hasNext())
{
int i = scanner.nextInt;
if ((i % 2) == 0 && i != 1)
myInts.add(i);
}
这将正确地消耗输入,并且应该正常工作。
包含此信息的扫描仪javadoc位于以下位置:行中
if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1)
从输入中读取两个整数,而不是检查同一个整数两次:
int nextInt = scanner.nextInt();
if ((nextInt % 2) == 0 && nextInt != 1)
排队
if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1)
从输入中读取两个整数,而不是检查同一个整数两次:
int nextInt = scanner.nextInt();
if ((nextInt % 2) == 0 && nextInt != 1)
是的,我想你理解错了。每当使用scanner类指针的nextInt()方法时,哪个扫描文件将移动到nextInt()。所以最好将整数值保存在临时变量中。下面是对代码的修改
BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
InputStream inputStream = null;
List<Integer> myInts = new ArrayList<Integer>();
String filePath = null;
try
{
filePath = bfReader.readLine();
inputStream = new FileInputStream(filePath);
}
catch (IOException e)
{
}
Scanner scanner = new Scanner(inputStream);
while (scanner.hasNext())
{
int firstNumber = scanner.nextInt();
if ((firstNumber % 2) == 0 && firstNumber != 1)
myInts.add(firstNumber);
//if ((scanner.nextInt() & 1) == 0)
// myInts.add(scanner.nextInt());
}
for (Integer x : myInts)
{
System.out.println(x);
}
BufferedReader bfReader=新的BufferedReader(新的InputStreamReader(System.in));
InputStream InputStream=null;
List myInts=new ArrayList();
字符串filePath=null;
尝试
{
filePath=bfReader.readLine();
inputStream=新文件inputStream(文件路径);
}
捕获(IOE异常)
{
}
扫描仪=新扫描仪(inputStream);
while(scanner.hasNext())
{
int firstNumber=scanner.nextInt();
如果((firstNumber%2)==0&&firstNumber!=1)
myInts.add(第一个数字);
//if((scanner.nextInt()&1)==0)
//添加(scanner.nextInt());
}
用于(整数x:myInts)
{
系统输出println(x);
}
是的,我想你理解错了。每当使用scanner类指针的nextInt()方法时,哪个扫描文件将移动到nextInt()。所以最好将整数值保存在临时变量中。下面是对代码的修改
BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
InputStream inputStream = null;
List<Integer> myInts = new ArrayList<Integer>();
String filePath = null;
try
{
filePath = bfReader.readLine();
inputStream = new FileInputStream(filePath);
}
catch (IOException e)
{
}
Scanner scanner = new Scanner(inputStream);
while (scanner.hasNext())
{
int firstNumber = scanner.nextInt();
if ((firstNumber % 2) == 0 && firstNumber != 1)
myInts.add(firstNumber);
//if ((scanner.nextInt() & 1) == 0)
// myInts.add(scanner.nextInt());
}
for (Integer x : myInts)
{
System.out.println(x);
}
BufferedReader bfReader=新的BufferedReader(新的InputStreamReader(System.in));
InputStream InputStream=null;
List myInts=new ArrayList();
字符串filePath=null;
尝试
{
filePath=bfReader.readLine();
inputStream=新文件inputStream(文件路径);
}
捕获(IOE异常)
{
}
扫描仪=新扫描仪(inputStream);
while(scanner.hasNext())
{
int firstNumber=scanner.nextInt();
如果((firstNumber%2)==0&&firstNumber!=1)
myInts.add(第一个数字);
//if((scanner.nextInt()&1)==0)
//添加(scanner.nextInt());
}
用于(整数x:myInts)
{
系统输出