Tag: string

为什么\ n和(String)System.getProperty(“line.separator”); 行为不同?

我的程序接受一个文本文件的输入,其中每个单词都用换行符分隔,我的程序接受并处理数据,然后我需要在保持控制台输出的同时输出到新文件。 现在我想知道为什么当我将“\ n”附加到我的stringBuilder时,它将它打印出来,因为它在控制台中有一个新行,但是在文件输出中,它不会将它作为一个新行而只是将所有单词放在一行中。 当我使用newLine时,它只在我的控制台输出和输出文件中给出一个新行。 这是为什么? (String)System.getProperty(“line.separator”)做了什么导致这个? String newLine = (String)System.getProperty(“line.separator”); try{ BufferedReader fileIn = new BufferedReader(new FileReader(fileName)); stringBuilder.append(newLine); while((s = fileIn.readLine()) != null){ stringBuilder.append(s); stringBuilder.append(newLine);//using newLine, } String a = stringBuilder.toString(); if(s== null){ fileIn.close(); }

为什么我的字符串操作使用lambda表达式很慢?

方法将逗号分隔的单词作为String并以逗号分隔的单词返回String ,其中包含自然排序顺序的单词,不包含任何4个字母的单词,包含UPPER大小写中的所有单词,不包含重复项。 与第二种方法相比,第一种方法相当慢。 你能帮我理解为什么以及如何改进我的方法? 方法1: public String stringProcessing(String s){ Stream tokens = Arrays.stream(s.split(“,”)); return tokens.filter(t -> t.length() != 4) .distinct() .sorted() .collect(Collectors.joining(“,”)).toUpperCase(); } 方法2: public String processing(String s) { String[] tokens = s.split(“,”); Set resultSet = new TreeSet(); for(String t:tokens){ if(t.length() != 4) resultSet.add(t.toUpperCase()); } StringBuilder result = new StringBuilder(); resultSet.forEach(key -> { result.append(key).append(“,”); }); […]

有效的方法来替换字符串中的字符(java)?

我正在写一个小的JAVA程序: 将文本作为字符串 需要2个字符arrays 我试图做的将听起来像“找到并替换”,但它不一样,所以我认为清除它很重要。 无论如何,我想要获取此文本,查找第一个数组中的任何char是否与文本中的char匹配,如果是,请将其替换为第二个char数组中匹配的char(根据索引)。 我将用一个例子来解释:让我说我的文本(String)是:“java很棒!”; 我有2个数组(char []):“absm”和“!@ * $”。 希望的结果是将’a’改为’!’ ,’b’到’@’等等……意味着生成的文本将是: “java真棒!” 改为 – >“j @ v @ i * @ w * o $ e!” 这样做最有效的方法是什么?为什么? 我想过循环文本,但后来发现它不那么有效。 (可以使用StringBuilder / String类)

Java的String#intern()方法是如何实现的?

我试着看看Java的String#intern()方法,但是它的public native String intern(); 一般来说,如何实施实习? 在String的情况下?

Java Scanner字符串输入

我正在编写一个使用Event类的程序,其中包含一个日历实例和一个String类型的描述。 创建事件的方法使用扫描程序来获取月,日,年,小时,分钟和描述。 我遇到的问题是Scanner.next()方法只返回空格前的第一个单词。 因此,如果输入是“我的生日”,则该事件实例的描述仅为“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()来解决这个问题,但是当我尝试这个时,它只是跳过输入应该去的地方。 以下是我的代码的一部分: System.out.print(“Please enter the event description: “); String input = scan.nextLine(); e.setDescription(input); System.out.println(“Event description” + e.description); e.time.set(year, month-1, day, hour, min); addEvent(e); System.out.println(“Event: “+ e.time.getTime()); 这是我得到的输出: Please enter the event description: Event description Event: Thu Mar 22 11:11:48 EDT 2012 它跳过空格以输入描述字符串,因此,描述(最初设置为空格 – “”)永远不会更改。 我怎样才能解决这个问题?

删除两个字符之间的子字符串(java)

我有一个java字符串,如下所示: String string = “I really want to get rid of the strong-tags!”; 我想删除标签。 我有一些标签更长的其他字符串,所以我想找到一种方法来删除“”字符之间的所有内容,包括那些字符。 一种方法是使用内置字符串方法将字符串与regEx进行比较,但我不知道如何编写它们。

为什么NPE使用DatatypeConverter的静态方法?

我已经盯着这个短代码太长了,并且不能为我的生活看到它如何在第6行抛出NullPointerException 。为什么NPE? class ConvertTest { public static void main(String[] args) throws Exception { byte[] b = “Ha”.getBytes(“UTF-8”); System.out.println(“bytes: ” + b.length); javax.xml.bind.DatatypeConverter.printBase64Binary(b); // NPE! } } 产量 bytes: 2 Exception in thread “main” java.lang.NullPointerException at javax.xml.bind.DatatypeConverter.printBase64Binary(DatatypeConverter.java:547) at ConvertTest.main(ConvertTest.java:6) Press any key to continue . . . 更新 虽然许多错误报告都指向1.7变种,但我惊讶地看到Eclipse配置为使用1.6.0_32 TextPad发现版本为1.6.0-b105 (甚至没有意识到已经安装了!) 。 两个JRE都失败了NPE。

Java – 检查parseInt是否抛出exception

我想知道如果Integer.parseInt(无论如何)没有失败,该怎么做。 更具体地说,我有一个由换行符分隔的用户指定值的jTextArea。 我想检查每一行,看看是否可以转换为int。 想像这样的东西,但它不起作用: for(int i = 0; i < worlds.jTextArea1.getLineCount(); i++){ if(Integer.parseInt(worlds.jTextArea1.getText(worlds.jTextArea1.getLineStartOffset(i),worlds.jTextArea1.getLineEndOffset(i)) != (null))){} } 任何帮助赞赏。

“if(rs.next())”是什么意思?

我目前收到错误, java.sql.SQLException: Method ‘executeQuery(String)’ not allowed on prepared statement. 因为我正在使用 PreparedStatement stmt = conn.prepareStatement(sql); 并且也有 ResultSet rs = stmt.executeQuery(sql); 在我的代码中。 我现在需要删除ResultSet行,但这使我不得不处理以下代码: if (rs.next()) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(“login.successful”)); request.getSession(true).setAttribute(“USERNAME”, rs.getString(“USERNAME”)); request.getSession(true).setAttribute(“BALANCE”, rs.getString(“BALANCE”)); request.setAttribute(“msg”, “Logged in successfully”); 我不确定我完全明白什么 if (rs.next()) 确实。 有人可以向我解释这段代码吗? 如果我对此有了更好的理解,我相信我会更好地了解如何使用PreparedStatement结果和rs用于逻辑。 此外,任何有助于改变逻辑的帮助也将受到高度赞赏。

Java Scanner类读取字符串

我得到以下代码: int nnames; String names[]; System.out.print(“How many names are you going to save: “); Scanner in = new Scanner(System.in); nnames = in.nextInt(); names = new String[nnames]; for (int i = 0; i < names.length; i++){ System.out.print("Type a name: "); names[i] = in.nextLine(); } 该代码的输出如下: How many names are you going to save:3 Type a name: […]