Java 字符串高级修剪程序
Java program for advanced trimming of String
原题是----在java中写一个程序,输入一个只以!结尾的句子。要么 ? .句子中的每个单词由一个空格分隔space。将句子转换为大写并删除多余的空格 space,以便每个单词仅由一个空格 space 分隔。打印无效输入的消息。
我已经写了一个答案,但是没成功。这是我的代码:
package OMG;
import java.util.Scanner;
public class Trimmer_new
{
String Trim(String s)
{
s=s.trim();
String ans="";
int k=0;
s=s+" ";
for(int i=1;i<=s.length();i++)
{
if(s.charAt(k)!= ' ')
{
char g=s.charAt(k);
ans=ans+g;
k++;
}
else
{
while(s.charAt(k)==' ')
{
k++;
}
ans=ans+" ";
k++;
}
}
ans.trim();
return ans;
}
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
System.out.print("Enter a sentance ending only with '!' or '?': ");
String a=sc.next();
if(a.endsWith("!")==true||a.endsWith("?")==false)
{
Trimmer_new ob= new Trimmer_new();
System.out.println("Trimmed sentence: "+ob.Trim(a));
}
else
{
System.out.println("error");
}
sc.close();
}
}
但在 运行 时抛出异常:
谁能给我提供更好更干净的代码??
(我在 Eclipse IDE 中这样做)
有两个问题。首先你永远不会在递增 K++ 时进行检查其次你没有使用 i 即使你不能使用 i 值作为 i=s.length();你总是需要使用 till -1 因为数组从 0 开始。
更好的选择是:
String result = Arrays.stream(input.split(" ")).filter(p-> p.length()>0).map(p-> p.trim()).collect(Collectors.joining(" "));
原题是----在java中写一个程序,输入一个只以!结尾的句子。要么 ? .句子中的每个单词由一个空格分隔space。将句子转换为大写并删除多余的空格 space,以便每个单词仅由一个空格 space 分隔。打印无效输入的消息。
我已经写了一个答案,但是没成功。这是我的代码:
package OMG;
import java.util.Scanner;
public class Trimmer_new
{
String Trim(String s)
{
s=s.trim();
String ans="";
int k=0;
s=s+" ";
for(int i=1;i<=s.length();i++)
{
if(s.charAt(k)!= ' ')
{
char g=s.charAt(k);
ans=ans+g;
k++;
}
else
{
while(s.charAt(k)==' ')
{
k++;
}
ans=ans+" ";
k++;
}
}
ans.trim();
return ans;
}
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
System.out.print("Enter a sentance ending only with '!' or '?': ");
String a=sc.next();
if(a.endsWith("!")==true||a.endsWith("?")==false)
{
Trimmer_new ob= new Trimmer_new();
System.out.println("Trimmed sentence: "+ob.Trim(a));
}
else
{
System.out.println("error");
}
sc.close();
}
}
但在 运行 时抛出异常:
谁能给我提供更好更干净的代码??
(我在 Eclipse IDE 中这样做)
有两个问题。首先你永远不会在递增 K++ 时进行检查其次你没有使用 i 即使你不能使用 i 值作为 i=s.length();你总是需要使用 till -1 因为数组从 0 开始。
更好的选择是:
String result = Arrays.stream(input.split(" ")).filter(p-> p.length()>0).map(p-> p.trim()).collect(Collectors.joining(" "));