Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我试图打印新行时,为什么要将新行附加到数组元素?_Java_Arrays_String_Newline - Fatal编程技术网

Java 当我试图打印新行时,为什么要将新行附加到数组元素?

Java 当我试图打印新行时,为什么要将新行附加到数组元素?,java,arrays,string,newline,Java,Arrays,String,Newline,我得到以下输出(关键字的值为sparktg): 为什么在匹配[m]的情况下,“sparktg”和“1”之间有一个新行?如果您无法控制输入,则可以在使用输入之前执行trim()。这消除了任何\n和空格 match:sparktg 1 keyword:sparktg1 false 您可以编写一个实用方法来实现这一点,从而使它更干净 if(match[m] != null) { System.out.println("match:"+match[m].trim()); } if(keyword

我得到以下输出(关键字的值为sparktg):


为什么在匹配[m]的情况下,“sparktg”和“1”之间有一个新行?

如果您无法控制输入,则可以在使用输入之前执行
trim()
。这消除了任何
\n
和空格

match:sparktg
1
keyword:sparktg1
false
您可以编写一个实用方法来实现这一点,从而使它更干净

if(match[m] != null) {
   System.out.println("match:"+match[m].trim());
}
if(keyword != null) {
   System.out.println("keyword:"+keyword.trim());
}
并按如下方式使用:

public String sanitize(String input) {
    return input != null ? input.trim() : null;
}

如果无法控制输入,则可以在使用输入之前执行
trim()
。这消除了任何
\n
和空格

match:sparktg
1
keyword:sparktg1
false
您可以编写一个实用方法来实现这一点,从而使它更干净

if(match[m] != null) {
   System.out.println("match:"+match[m].trim());
}
if(keyword != null) {
   System.out.println("keyword:"+keyword.trim());
}
并按如下方式使用:

public String sanitize(String input) {
    return input != null ? input.trim() : null;
}

我能看到的唯一原因是,
match[0]
已经以换行符结尾。在添加
“1”
之前,应通过输出
匹配[0]
进行检查。一个好的做法是以这种形式输出:

match[m] = sanitize(match[m]);
keyword = sanitize(keyword);
…因此,使用
|
来清楚地标记字符串的开始和结束位置

您可以使用
trim()

System.out.println("|"+match[0]+"|");

但是,这也会删除空格和制表符,这对您来说可能是问题,也可能不是问题。当我比较字符串时,为了安全起见,我通常先修剪两个字符串,但前提是不考虑空格。

我能看到的唯一原因是
匹配[0]
已经以换行符结尾。在添加
“1”
之前,应通过输出
匹配[0]
进行检查。一个好的做法是以这种形式输出:

match[m] = sanitize(match[m]);
keyword = sanitize(keyword);
…因此,使用
|
来清楚地标记字符串的开始和结束位置

您可以使用
trim()

System.out.println("|"+match[0]+"|");

但是,这也会删除空格和制表符,这对您来说可能是问题,也可能不是问题。当我比较字符串时,为了安全起见,我通常会先修剪两个字符串,但前提是不考虑空格。

试试这个。在解析之前替换所有新行

match[m] = match[m].trim() + "1";
私有静态int索引(字符串[]匹配,字符串关键字){
int m=0;

对于(int k=0;k试试这个。在解析之前替换所有新行

match[m] = match[m].trim() + "1";
私有静态int索引(字符串[]匹配,字符串关键字){
int m=0;

对于(intk=0;k,这不是答案,而是代码的符号

match[m].equals(null)
将抛出
NullPointerException
。在调用对象的任何方法之前,检查
match[m]
是否不等于null的正确方法是:
mathc[m]!=null

private static int Index(String[] match,String keyword){
       int m=0;

       for(int k=0;k<match.length;k++){
           if(match[k]!=null)
           match[k]= match[k].replace("\n", "");

       }
       if(keyword!=null)
           keyword= keyword.replace("\n", "");

       keyword=keyword+"1";
       match[m]=match[m]+"1";
       System.out.println("match:"+match[m]);
       System.out.println("keyword:"+keyword);
       System.out.println(match[m].equals(keyword));
       while(!(match[m].equals("")) && !(match[m].equals(null))){
               System.out.println("yes");
           if(match[m].equals(keyword)){
             break;
           }
           else
               m++;
       }
       return m;
    }
与此相反:

match[m] != null && !match[m].equals("")

这不是答案,而是代码的符号

match[m].equals(null)
将抛出
NullPointerException
。在调用对象的任何方法之前,检查
match[m]
是否不等于null的正确方法是:
mathc[m]!=null

private static int Index(String[] match,String keyword){
       int m=0;

       for(int k=0;k<match.length;k++){
           if(match[k]!=null)
           match[k]= match[k].replace("\n", "");

       }
       if(keyword!=null)
           keyword= keyword.replace("\n", "");

       keyword=keyword+"1";
       match[m]=match[m]+"1";
       System.out.println("match:"+match[m]);
       System.out.println("keyword:"+keyword);
       System.out.println(match[m].equals(keyword));
       while(!(match[m].equals("")) && !(match[m].equals(null))){
               System.out.println("yes");
           if(match[m].equals(keyword)){
             break;
           }
           else
               m++;
       }
       return m;
    }
与此相反:

match[m] != null && !match[m].equals("")

在添加
1
之前,您有
sparktg\n
内部
match[0]
我刚刚测试了您的代码,它看起来很好。您能告诉我们如何使用它吗?同样在if
match[m]中。等于(null)
您将只检查索引
m
上的数组
match
是否存储字符串“null”。如果
match[m]
没有设置值
(null)
您将看到
java.lang.NullPointerException
,因为它将尝试执行
null.equals(null)
。如果这不是您的意图,请改为使用
match[m]==null
或者在您的情况下使用
match[m]!=null
。您在
match[0]中有
sparktg\n
在添加
1
之前,我刚刚测试了你的代码,它看起来很好。你能告诉我们你如何使用它吗?同样在你的if
match[m]中。equals(null)
你只会检查索引
m
上的数组
是否匹配
存储字符串“null”。如果
match[m]
没有设置值
(null)
您将看到
java.lang.NullPointerException
,因为它将尝试执行
null.equals(null)
。如果这不是您的意图,请使用
match[m]==null
,或者在您的情况下使用
match[m]!=null
。如果您只想删除换行,请查看
String.replaceAll()
String.replaceFirst()
,这将允许您通过正则表达式控制替换。如果您只对删除换行符感兴趣,请查看
String.replaceAll()
String.replaceFirst()
,这将允许您通过正则表达式控制替换。