Java 按字母顺序排列给定字符串中的单词
我只是想写一个代码,将单词按字母顺序排列在一个字符串中。。 但每当我运行它时,它就会进入一个无限循环。。我不知道到底发生了什么有人能帮我解决吗。。下面我附上了我的代码Java 按字母顺序排列给定字符串中的单词,java,Java,我只是想写一个代码,将单词按字母顺序排列在一个字符串中。。 但每当我运行它时,它就会进入一个无限循环。。我不知道到底发生了什么有人能帮我解决吗。。下面我附上了我的代码 public class AscendString { String s=new String(); public AscendString(String x) { s=x.trim(); } public int NoWords() { int
public class AscendString {
String s=new String();
public AscendString(String x)
{
s=x.trim();
}
public int NoWords()
{
int i=0;
String s1=new String();
s1=s;
while(s1.length() > 0)
{ i++;
int j=s1.indexOf(' ');
if(j>0)
{
s1.substring(j+1);
s1=s1.trim();
}
else
s1="";
}
return i;
}
public void Ascend()
{
String str[]=new String[NoWords()];
String s1=new String();
s1=s;
int i=0;
while(s1.length() > 0)
{
int j=s1.indexOf(' ');
if(j>0)
{
str[i]=s1.substring(0,j) ;
s1=s1.substring(j+1);
s1=s1.trim();
i++;
}
else
{
str[i]=s1;
s1="";
}
}
for(int j=0;j < str.length-1;j++)
{
for(int k=0;k < str.length-1-j;k++)
if(str[k].length() > str[k+1].length())
{String temp=str[k];
str[k]=str[k+1];
str[k+1]=temp;
}
}
String str1="";
for(int n=0;n < str.length;n++)
str1=str1+str[n] +" " ;
System.out.println("The String in Alphabetic Order is: "+str1);
}
public static void main(String args[])
{
AscendString exmpl=new AscendString("I Love Java Programming");
exmpl.Ascend();
}
}
公共类字符串{
字符串s=新字符串();
公共字符串(字符串x)
{
s=x.trim();
}
公共内部术语()
{
int i=0;
字符串s1=新字符串();
s1=s;
而(s1.length()>0)
{i++;
int j=s1.indexOf(“”);
如果(j>0)
{
s1.子串(j+1);
s1=s1.trim();
}
其他的
s1=“”;
}
返回i;
}
公共空间上升()
{
字符串str[]=新字符串[NoWords()];
字符串s1=新字符串();
s1=s;
int i=0;
而(s1.length()>0)
{
int j=s1.indexOf(“”);
如果(j>0)
{
str[i]=s1.子串(0,j);
s1=s1.子串(j+1);
s1=s1.trim();
i++;
}
其他的
{
str[i]=s1;
s1=“”;
}
}
对于(int j=0;jstr[k+1].length())
{String temp=str[k];
str[k]=str[k+1];
str[k+1]=温度;
}
}
字符串str1=“”;
对于(int n=0;n
试试:
substring
返回子字符串,不更改字符串。因此此循环:
while(s1.length() > 0)
{ i++;
int j=s1.indexOf(' ');
if(j>0)
{
s1.substring(j+1);
s1=s1.trim();
}
else
s1="";
}
永垂不朽。试试:
substring
返回子字符串,不更改字符串。因此此循环:
while(s1.length() > 0)
{ i++;
int j=s1.indexOf(' ');
if(j>0)
{
s1.substring(j+1);
s1=s1.trim();
}
else
s1="";
}
永垂不朽。你为什么要让这件事变得困难
String exmpl=new String("I Love Java Programming");
String[] parts = exmpl.split("\\s+");
Arrays.sort(parts);
StringBuilder sb = new StringBuilder();
for(String s:parts){
sb.append(s);
sb.append(" ");
}
String sorted = sb.toString.trim();
你为什么这么难
String exmpl=new String("I Love Java Programming");
String[] parts = exmpl.split("\\s+");
Arrays.sort(parts);
StringBuilder sb = new StringBuilder();
for(String s:parts){
sb.append(s);
sb.append(" ");
}
String sorted = sb.toString.trim();
新字符串(…)
\\W+
。你会在非单词成分上分裂。然后,了解Collator
和CollationKey
。您可能需要不区分大小写的搜索。或者,在输入的过程中使用小写字符串
新字符串(…)
根据Cratylus的回答,您可以将正则表达式更改为
\\W+
。你会在非单词成分上分裂。然后,了解Collator
和CollationKey
。您可能需要不区分大小写的搜索。或者,输入过程中的字符串小写。当您不了解程序在做什么时,您应该首先尝试在调试器中单步执行代码。当您不了解程序在做什么时,您应该首先尝试在调试器中单步执行代码。谢谢先生,我只是在编码时漏掉了它,我纠正了它,它给了我预期的结果。谢谢,先生,我只是在编码时漏掉了它,我纠正了它,它给了我预期的结果。先生,我实际上是java新手。事实上,我只是一个初学者。我刚刚被教授了基本的字符串操作&数据类型、控制结构,我的老师给了我这个作业。。我不知道stringbuffer和其他在这里编码的东西…bt对我来说似乎非常有趣&非常简短和紧凑,但我做了什么。。你能解释一下你的步骤吗?我想学。把句子分成几个单词。对单词进行排序。使用stringbuilder附加已排序的单词并创建已排序的字符串。只需查看javadocsir,我实际上是java新手。事实上,我只是一个初学者。我刚刚被教授了基本的字符串操作&数据类型、控制结构,我的老师给了我这个作业。。我不知道stringbuffer和其他在这里编码的东西…bt对我来说似乎非常有趣&非常简短和紧凑,但我做了什么。。你能解释一下你的步骤吗?我想学。把句子分成几个单词。对单词进行排序。使用stringbuilder附加已排序的单词并创建已排序的字符串。只需查看Javadoc即可回答您的第4个问题,我想要的正是您所说的。回答您的第4个问题,我想要的正是您所说的。