我使用扫描仪处理用户输入句子,如果单词"嘿"它似乎添加到扫描仪。所以基本上是一个字数。如何在不使用
之类的情况下突破无限时间(scan.hasNext())循环@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {
Neo4jConfigTest.class,
FdTemplate.class,
FdServerIo.class,
MapBasedStorageProxy.class})
@ActiveProfiles({"dev", "fd-auth-test", "fd-client"})
public class TestEntityLinks {
@Autowired
private ContentModelService contentModelService;
@Autowired
private BatchService batchService;
@Test
public void doSomething () { ... }
我无法以这种方式突破循环,因为我已经获得了无法改变的输入。
if(scan.next().equals("exit")
break;
答案 0 :(得分:0)
使用hasNext()的while循环不会中断,直到您使用文件结尾条件,如下所示
while(scan.hasNext()){
if(scan.next().equals("hey")){
c++;
}
else if(scan.next().equals("exit")){
break;
}
当你从stdin读取时,它要么想要一个EOF字符(Linux / Unix / Mac上的Ctrl + D或Windows上的Ctrl + Z),要么是一个突破循环的条件。
答案 1 :(得分:0)
您可以设置while(true)表示无限循环,并在匹配退出
后将其分解 Scanner scan = new Scanner(System.in);
int c = 0;
while(true){
if (scan.next().equals("exit"))
{
break;
}
else
{
c++;
}
}
System.out.println(c);
对于行/字数,您可以使用
String text=null;
while(true)
{
Scanner inputText = new Scanner(System.in);
int lineCount=0;
text= inputText.nextLine();
if(text!=null)
{
lineCount++;
}
StringBuilder sb = new StringBuilder();
sb.append(text);
int wordcount=sb.length();
System.out.println("Text : "+text);
System.out.println("Number of Words:"+wordcount);
System.out.println("Number of Lines: "+lineCount);
System.out.println("Text afer removing white spaces :"+text.replaceAll(" ", "").length());
}
答案 2 :(得分:0)
如果您只需要将一行文本复制并粘贴到程序中作为字符串文字......
String msg = "hey you";
Scanner tokenizer = new Scanner(msg);
int count = 0;
while (tokenizer.hasNext()) {
if (tokenizer.next().equals("hey")) {
++c;
}
}
您可以使用Scanner来标记字符串。你的循环应该结束。