import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexTestHarness { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {             // 为什么true会一直循环?并没有把true赋值给任何boolean的变量啊
System.out.printf("%nEnter your regex: ");
Pattern pattern = Pattern.compile(scanner.nextLine());
System.out.printf("Enter input string to search: ");
Matcher matcher = pattern.matcher(scanner.nextLine());
boolean found = false;
while (matcher.find()) {
System.out
.printf(
"I found the text \"%s\" starting at index %d and ending at index %d.%n",
matcher.group(), matcher.start(), matcher.end());           // s,d的意思?
found = true;
}
if (!found) {
System.out.printf("No match found.%n");
}
}
}
}不清楚的问题都写上去了 还有一个就是System.out.printf能等于System.out.println吗 为什么换行是%n不是\n啊

解决方案 »

  1.   

    printf 是格式输出函数 前面是用占位符,后面填写相应的值如:
    System.out.printf("%d,%s,%n",1,"a"); %n可以写成\n 那个while(true) 本身就是死循环,需要在循环体内跳出,使用break或者return跳出;
      

  2.   

    while(true)这个会一直循环下去,这个不需要什么理由吧,O(∩_∩)O~,后面的%s,%d这种不是很常用到...
    printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为转换说明.因为它们指定了如何不数据转换成可显示的形式.下列列出的是ANSI C标准peintf()提供的各种转换说明.
     
              转换说明及作为结果的打印输出
    %a                浮点数、十六进制数字和p-记数法(C99)
    %A    浮点数、十六进制数字和p-记法(C99)
    %c    一个字符 
    %d    有符号十进制整数 
    %e    浮点数、e-记数法
    %E    浮点数、E-记数法
    %f    浮点数、十进制记数法  
    %g    根据数值不同自动选择%f或%e.
    %G    根据数值不同自动选择%f或%e.
    %i               有符号十进制数(与%d相同)
    %o    无符号八进制整数
    %p    指针    
    %s    字符串
    %u    无符号十进制整数
    %x    使用十六进制数字0f的无符号十六进制整数 
    %X    使用十六进制数字0f的无符号十六进制整数
    %%    打印一个百分号