提问人:cstjmn 提问时间:2/1/2023 最后编辑:cstjmn 更新时间:2/1/2023 访问量:53
扫描仪和 int (nextLine 和 next) [duplicate]
trouble with the scanner and int (nextLine and next) [duplicate]
问:
我在这项任务中遇到了一些麻烦,它应该有点像超市的东西。我是 java 的新手,如果扫描器,我们唯一允许的导入。
我们第一次记录客户和他们的项目时,它工作正常,它让我选择任意数量的项目,并且已经存在于数组中,一切都运行顺利 - 它继续询问是否有任何优惠券,然后它“打印”收据 - 问题是第二个客户 - 一切都运行顺利,直到这个代码(我将在下面显示)它只允许我选择一个产品和数量,然后它有点移动到下一件事(要求优惠券等),第三次它只让我选择产品 - 所以我相信问题出在 int.nextLine 或其他东西上 - 我已经看过其他问题并尝试添加下一个 nextLine 或只是下一个,但它一直在发生,所以它可能是做而......我不确定,我是 Java 和编码的新手 - 我真的会很感激任何关于它的建议或输入。
do{
System.out.println("WHICH ITEM WOULD YOU LIKE TO BUY");
int CodeItem=input.nextInt();
//the array has max 20 items
if(CodeItem<=20 && CodeItem>=1){
if(item[CodeItem-1]!=("null") && price[CodeItem-1]!=0.0)
{
System.out.println("How many of:"+item[CodeItem-1]);
int CANT=input.nextInt();
LOCALamount[CodeItem-1]+=CANT;
GLOBALamount[CodeItem-1]+=CANT;
//the boolean ending is declared as true at the start of the code
}
else
{
System.out.println("****not valid****");
ending=false;
}}else
{
System.out.println("****not valid****");
ending=false;
}
}while(ending);
答:
0赞
dev guy
2/1/2023
#1
在同一循环中使用 input.nextInt() 和 input.nextLine() 时可能会出现问题。input.nextInt() 方法读取下一个整数,但不使用后面的换行符。这意味着对 input.nextLine() 的第一次调用将立即返回一个空行,导致循环终止。
一种可能的解决方案是在调用 input.nextInt() 之后使用 input.nextLine(),然后使用 Integer.parseInt() 方法将其解析为整数。这将确保使用换行符,从而允许循环按预期继续进行。
下面是代码的更新版本:
do {
System.out.println("WHICH ITEM WOULD YOU LIKE TO BUY");
int codeItem = Integer.parseInt(input.nextLine());
if (codeItem <= 20 && codeItem >= 1) {
if (item[codeItem - 1] != ("null") && price[codeItem - 1] != 0.0) {
System.out.println("How many of:" + item[codeItem - 1]);
int cant = Integer.parseInt(input.nextLine());
LOCALamount[codeItem - 1] += cant;
GLOBALamount[codeItem - 1] += cant;
} else {
System.out.println("****not valid****");
ending = false;
}
} else {
System.out.println("****not valid****");
ending = false;
}
} while (ending);
评论
0赞
tchrist
7/18/2023
这个答案看起来像是由人工智能(如 ChatGPT)生成的,而不是由真人生成的。您应该知道,在 Stack Overflow 上发布 AI 生成的输出是正式禁止的。如果这个答案确实是由人工智能生成的,那么我强烈建议你在给自己带来更大的麻烦之前删除它:我们在这里认真对待抄袭。请阅读:为什么目前不允许发布 GPT 和 ChatGPT 生成的答案。
评论
nextLine()
if(item[CodeItem-1]!=("null")
null
" "
"null"
.equals
==
!=
false
true