提问人:Diksha 提问时间:6/8/2021 最后编辑:Diksha 更新时间:6/8/2021 访问量:1443
输入不适用于 do-while 循环中的 Scanner 类
Input not working with Scanner class in the do-while loop
问:
在 do-while 循环中,代码在第一种情况之后不接受输入。 它在接受输入后终止,并且没有正确执行 do-while 循环。z=sc.nextLine(){在 while 循环中有什么问题} 还是 Scanner 类?PS:我也尝试过扫描仪sc=new Scanner(“System.in”);但代码仍然不起作用。除了 parseInt() 还有其他选择吗?
输出即将到来 : 堆栈的大小? 5 1.推送 2.流行音乐 3.显示器 1 推送的数字? 19 继续?继续后,代码被终止
请帮忙。
class stak{
int tos=-1;
int size;
int a[];
stak(int l){
size=l;
tos=-1;
a=new int[l];
}
void push(int x){
if(tos==size-1){
System.out.println("Stack Overflow");
}
else{
a[++tos]=x;
}
}
void pop(){
if(tos<0){
System.out.println("Stack Underflow");
}
else{
System.out.println(a[tos--]);
}
}
void display(){
if(tos>=0){
for(int i=tos;i>=0;--i){
System.out.println(a[i]);
}
}
else
System.out.println("Stack is Empty");
}
}
public class stack{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("size of stack?");
int n=sc.nextInt();
stak s1=new stak(n);
String z;
do{
System.out.println("1.PUSH");
System.out.println("2.POP");
System.out.println("3.Display");
int ch=sc.nextInt();
switch(ch){
case 1 : System.out.println("number for push?");
int p=sc.nextInt();
s1.push(p);
break;
case 2 : System.out.println("POP!");
s1.pop();
break;
case 3 : System.out.println("Display!");
s1.display();
break;
default: System.out.println(" OOPS! owner says only take input as: 1,2,3");
break;
}
System.out.println("continue?");
z=sc.nextLine();
}while(z.equals("yes")|| z.equals("y"));
sc.close();
}
}
[1]: https://i.stack.imgur.com/BHZQO.png
答:
0赞
N.Balgopal Patro
6/8/2021
#1
问题出在 scanner 类上。因为当您使用 call this call 时,首先从您输入要推送到堆栈的数字的行中获取输入,因为此行只接受一个整数,但不会完成整行。z=sc.nextLine();
int p=sc.nextInt();
因此,您可以通过在输入“是”或“否”之前添加“来手动完成该行。通过添加额外的 nextLine() 将在整数间隙时完成当前行。sc.nextLine()
import java.util.Scanner;
class stak{
int tos=-1;
int size;
int a[];
stak(int l){
size=l;
tos=-1;
a=new int[l];
}
void push(int x){
if(tos==size-1){
System.out.println("Stack Overflow");
}
else{
a[++tos]=x;
}
}
void pop(){
if(tos<0){
System.out.println("Stack Underflow");
}
else{
System.out.println(a[tos--]);
}
}
void display(){
if(tos>=0){
for(int i=tos;i>=0;--i){
System.out.println(a[i]);
}
}
else
System.out.println("Stack is Empty");
}
}
public class stack{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("size of stack?");
int n=sc.nextInt();
stak s1=new stak(n);
String z;
do{
System.out.println("1.PUSH");
System.out.println("2.POP");
System.out.println("3.Display");
int ch=sc.nextInt();
switch(ch){
case 1 : System.out.println("number for push?");
int p=sc.nextInt();
s1.push(p);
break;
case 2 : System.out.println("POP!");
s1.pop();
break;
case 3 : System.out.println("Display!");
s1.display();
break;
default: System.out.println(" OOPS! owner says only take input as: 1,2,3");
break;
}
System.out.println("continue?");
sc.nextLine();
z=sc.nextLine();
}while(z.equals("yes")|| z.equals("y"));
sc.close();
}
}
希望这对你有所帮助。其他方面,您可以使用 BufferReader 来解决此问题
评论