相关疑难解决方法(0)

在使用next()或nextFoo()之后,Scanner正在跳过nextLine()?

我正在使用这些Scanner方法nextInt()nextLine()阅读输入.

它看起来像这样:

System.out.println("Enter numerical value");    
int option;
option = input.nextInt(); // Read numerical value from input
System.out.println("Enter 1st string"); 
String string1 = input.nextLine(); // Read 1st string (this is skipped)
System.out.println("Enter 2nd string");
String string2 = input.nextLine(); // Read 2nd string (this appears right after reading numerical value)
Run Code Online (Sandbox Code Playgroud)

问题是输入数值后,第一个input.nextLine()被跳过而第二个input.nextLine()被执行,所以我的输出如下所示:

Enter numerical value
3   // This is my input
Enter 1st string    // The program is supposed to stop here and …
Run Code Online (Sandbox Code Playgroud)

java io java.util.scanner

627
推荐指数
17
解决办法
45万
查看次数

Java String拆分删除了空值

我试图使用分隔符拆分值.但我发现了令人惊讶的结果

String data = "5|6|7||8|9||";
String[] split = data.split("\\|");
System.out.println(split.length);
Run Code Online (Sandbox Code Playgroud)

我期待得到8个值.[5,6,7,EMPTY,8,9,EMPTY,EMPTY] 但我只得到6个值.

任何想法和如何解决.无论EMPTY值在任何地方出现,它都应该在数组中.

java string split

262
推荐指数
4
解决办法
14万
查看次数

正则表达式上的String.split()*not*?

由于String.split()使用正则表达式,此片段:

String s = "str?str?argh";
s.split("r?");
Run Code Online (Sandbox Code Playgroud)

...收益率: [, s, t, , ?, s, t, , ?, a, , g, h]

什么是在r?序列上拆分此字符串以使其生成的最优雅的方法[st, st, argh]

编辑:我知道我可以摆脱这个问题?.问题是我不知道分隔符,我不想通过编写escapeGenericRegex()函数来解决这个问题.

java regex

48
推荐指数
4
解决办法
2万
查看次数

Java Regex - 使用String的replaceAll方法替换换行符

我有一个字符串,并希望简单地用字符串替换它中的所有换行符" --linebreak-- ".

只写下来就足够了:

string = string.replaceAll("\n", " --linebreak-- ");
Run Code Online (Sandbox Code Playgroud)

我对它的正则表达式部分感到困惑.换行符需要两个斜杠吗?这够好吗?

java regex newline

34
推荐指数
3
解决办法
6万
查看次数

理解Java中的正则表达式:split("\ t")vs split("\\ t") - 它们何时都可以工作,何时应该使用它们

我最近发现我在代码中没有正确使用正则表达式.给出了制表符分隔字符串的示例str,我一直在使用str.split("\t").现在我意识到这是错误的,并且正确匹配标签我应该使用str.split("\\t").

然而,我碰巧偶然发现了这个事实,因为我正在为其他东西寻找正则表达式.你看,错误的代码split("\t")在我的情况下工作得很好,现在我很困惑,为什么它可以工作,如果它是一个错误的方式来声明一个正则表达式匹配制表符.因此,问题是,为了实际理解如何在Java中处理正则表达式,而不是仅仅将代码复制到Eclipse中而不是真正关心其工作原理......

以类似的方式,我发现了一段不仅以制表符分隔而且以逗号分隔的文本.更清楚地说,我正在解析的制表符分隔列表有时包括"复合"项,它们看起来像:item1,item2,item3为了简单起见,我想将它们解析为单独的元素.在这种情况下,适当的正则表达式应该是:line.split("[\\t,]"),或者我也错在这里?

提前致谢,

java regex split

31
推荐指数
1
解决办法
4万
查看次数

如何以定义的顺序编写Java属性?

我正在使用java.util.Properties的store(Writer,String)方法来存储属性.在生成的文本文件中,属性以偶然的顺序存储.

这就是我正在做的事情:

Properties properties = createProperties();
properties.store(new FileWriter(file), null);
Run Code Online (Sandbox Code Playgroud)

如何确保按字母顺序或按属性添加顺序写出属性?

我希望解决方案比"手动创建属性文件"更简单.

java properties-file

28
推荐指数
2
解决办法
2万
查看次数

如何通过换行拆分字符串?

我是Android开发的菜鸟,我试图通过多个换行符多次拆分字符串.我正在尝试拆分的字符串是从数据库查询中提取的,并且构造如下:

public String getCoin() {
    // TODO Auto-generated method stub
    String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_OUNCES, KEY_VALUE };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
    String result = "";

    int iRow = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_NAME);
    int iQuantity = c.getColumnIndex(KEY_QUANTITY);
    int iOunces = c.getColumnIndex(KEY_OUNCES);
    int iValue = c.getColumnIndex(KEY_VALUE);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        result = result + /*c.getString(iRow) + " " +*/ c.getString(iName).substring(0, Math.min(18, c.getString(iName).length())) + "\n";
    }
    c.close();
    return result;
Run Code Online (Sandbox Code Playgroud)

result.getCoin读成:

alphabravocharlie
Run Code Online (Sandbox Code Playgroud)

我想在换行符处拆分字符串并将每个子字符串放入一个字符串数组中.这是我目前的代码: …

java android

20
推荐指数
3
解决办法
8万
查看次数

11
推荐指数
3
解决办法
1万
查看次数

如何从文本区域逐行读取

我已经弄清楚如何逐行阅读并逐行显示文本文档的内容到jtextarea我已经想出如何逐行写出从字符串数组到文本文档.我只是很难从textarea获得每一行,只要我能将每一行都放到一个数组中我就好了.下面是我将用于将每行写入文件的代码...

public class FileWrite {

    public static void FileClear(String FileName) throws IOException{
        FileWriter fstream = new FileWriter(FileName,true);
        BufferedWriter out = new BufferedWriter(fstream);
        out.write("");
    }

    public static void FileWriters(String FileName, String Content) throws IOException
    {   
        FileWriter fstream = new FileWriter(FileName,true);
        BufferedWriter out = new BufferedWriter(fstream);
        out.append(Content);
        out.newLine();

    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

C

java file-io

9
推荐指数
1
解决办法
3万
查看次数

如何打印多行字符串参数的每个元素?

我在Jenkins(v2.7.1)中完成了Pipeline作业,在这里我要打印多行字符串参数(Params)的每个元素,每行3个字符串:FooBarBaz作为输入。

因此,我尝试了以下语法(使用spliteach):

Params.split("\\r?\\n").each { param ->
    println "Param: ${param}"
}
Run Code Online (Sandbox Code Playgroud)

但是它失败了:

java.lang.UnsupportedOperationException:尚不支持在CPS转换的闭包上调用public static java.lang.Object org.codehaus.groovy.runtime.DefaultGroovyMethods.each(java.lang.Object,groovy.lang.Closure)(JENKINS-26481); 封装为@NonCPS方法,或在org.jenkinsci.plugins.workflow.cps.GroovyClassLoaderWhitelist.checkJenkins26481(GroovyClassLoaderWhitelist.java:90)上使用Java样式的循环

建议使用@NonCPS方法封装,或使用Java样式的循环


所以我试着用@NonCPS方法封装

@NonCPS
def printParams() {
    Params.split("\\r?\\n").each { param ->
        println "Param: ${param}"
    }
}
printParams()
Run Code Online (Sandbox Code Playgroud)

但是它失败了:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println groovy.lang.Closure java.lang.Object

如果没有该功能(按照第一个示例),则@NonCPS在开始时添加它会抱怨意外的token


我还尝试了使用for运算符建议的Java样式语法(类似于here):

String[] params = Params.split("\\r?\\n")
for (String param: params) {
    println "Param: ${param}"
} …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

5
推荐指数
1
解决办法
9832
查看次数