此代码应该采用由随机的一对平衡括号组成的输入,如果平衡则返回true,如果不平衡则返回false 例如()[] =真; ((()))=真; {} [[]] = TRUE; [[] = false;
我似乎无法使用Scanner类从文件返回输入。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
System.out.println(deal());
}
}
public static boolean deal(){
Scanner ivput = new Scanner(System.in);
char[] charArray = {'{','}','(',')','[',']'};
String first = ivput.next();
char[] charArray1 = new char[first.length()];
first.getChars(0,first.length(),charArray1,0);
int p =0;
int q = 0;
int r = 0;
int s= 0;
int t = 0;
int u = 0;
for (int y =0;y<charArray1.length;y++){
if(charArray[0] == charArray1[y])
p++;
else if(charArray[1] == charArray1[y])
q++;
else if(charArray[2] == charArray1[y])
r++;
else if (charArray[3] == charArray1[y])
s++;
else if(charArray[4] == charArray1[y])
t++;
else if (charArray[5] == charArray1[y])
u++;
}
if (p == q && r==s && t ==u)
return true;
else
return false;
}
}
答案 0 :(得分:1)
问题是,创建了两个扫描程序实例。一个在主要功能,
strwidth
和另一个函数deal()
Scanner input = new Scanner(System.in);
当控件到达第二个实例创建时,通过获取System.in输入流重新创建扫描程序,因此先前输入的文本将丢失。在底线,您输入的第一行永远不会执行。
修改代码如下,以使第一行也正常工作,
Scanner ivput = new Scanner(System.in);