Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 - Fatal编程技术网

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();  
  • 没有任何理由调用
    新字符串(…)
  • 标点符号重要吗
  • 重复的单词呢
  • 是否希望字符串按大小写排序?你对“一个人,一个计划,一条运河,巴拿马”有什么期待?“巴拿马运河人,计划”
  • 根据Cratylus的回答,您可以将正则表达式更改为
    \\W+
    。你会在非单词成分上分裂。然后,了解
    Collator
    CollationKey
    。您可能需要不区分大小写的搜索。或者,在输入的过程中使用小写字符串

  • 没有任何理由调用
    新字符串(…)
  • 标点符号重要吗
  • 重复的单词呢
  • 是否希望字符串按大小写排序?你对“一个人,一个计划,一条运河,巴拿马”有什么期待?“巴拿马运河人,计划”

  • 根据Cratylus的回答,您可以将正则表达式更改为
    \\W+
    。你会在非单词成分上分裂。然后,了解
    Collator
    CollationKey
    。您可能需要不区分大小写的搜索。或者,输入过程中的字符串小写。

    当您不了解程序在做什么时,您应该首先尝试在调试器中单步执行代码。当您不了解程序在做什么时,您应该首先尝试在调试器中单步执行代码。谢谢先生,我只是在编码时漏掉了它,我纠正了它,它给了我预期的结果。谢谢,先生,我只是在编码时漏掉了它,我纠正了它,它给了我预期的结果。先生,我实际上是java新手。事实上,我只是一个初学者。我刚刚被教授了基本的字符串操作&数据类型、控制结构,我的老师给了我这个作业。。我不知道stringbuffer和其他在这里编码的东西…bt对我来说似乎非常有趣&非常简短和紧凑,但我做了什么。。你能解释一下你的步骤吗?我想学。把句子分成几个单词。对单词进行排序。使用stringbuilder附加已排序的单词并创建已排序的字符串。只需查看javadocsir,我实际上是java新手。事实上,我只是一个初学者。我刚刚被教授了基本的字符串操作&数据类型、控制结构,我的老师给了我这个作业。。我不知道stringbuffer和其他在这里编码的东西…bt对我来说似乎非常有趣&非常简短和紧凑,但我做了什么。。你能解释一下你的步骤吗?我想学。把句子分成几个单词。对单词进行排序。使用stringbuilder附加已排序的单词并创建已排序的字符串。只需查看Javadoc即可回答您的第4个问题,我想要的正是您所说的。回答您的第4个问题,我想要的正是您所说的。