Java 函数只是颠倒输入的顺序,而不是按降序排序
我需要制作一个程序,从用户那里获取字符串输入并将其存储在数组中。然后我需要创建一个函数,首先:按降序对每个字符串{character by character}进行排序,然后:按降序对所有字符串输入{Strings}进行排序Java 函数只是颠倒输入的顺序,而不是按降序排序,java,arrays,Java,Arrays,我需要制作一个程序,从用户那里获取字符串输入并将其存储在数组中。然后我需要创建一个函数,首先:按降序对每个字符串{character by character}进行排序,然后:按降序对所有字符串输入{Strings}进行排序 package com.company; import java.util.Arrays; import java.util.Scanner; public class Main { static String sortString(String str)
package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static String sortString(String str)
{
char[] chArr = str.toCharArray();
String SortString = "";
// For sorting each individual strings character by character
for (int i = 0; i< chArr.length; i++)
{
for (int j = 0; j < chArr.length; j++)
{
if(chArr[i] > chArr[j])
{
char temp = chArr[i];
chArr[i] = chArr[j];
chArr[j] = temp;
}
}
}
//converting all of the character into a single string
for (int k = 0; k<chArr.length;k++)
{
SortString = SortString + chArr[k];
}
//Assigning the current String Sortstring to an array
String[] OldArray = new String[5];
for (int counter = 0; counter<5; counter++)
{
OldArray[counter] = SortString;
}
//sorting all of the strings in descending order
for (int i = 0; i< OldArray.length;i++)
{
for (int j = i+1; j< OldArray.length;j++)
{
if(OldArray[i].compareTo(OldArray[j]) > 0)
{
String temp = OldArray[i];
OldArray[i] = OldArray[j];
OldArray[j] = temp;
}
}
}
return OldArray[0];
}
public static void main(String[] args)
{
Scanner UserInput = new Scanner (System.in);
String[] names = new String[5];
// will take a String user input from a user and store it in an arra
for (int counter = 0; counter<5; counter++)
{
do
{
System.out.print("Input String #" + (counter+1) + ": ") ;
names[counter] = UserInput.next().toLowerCase();
}while(names[counter].length() > 25);
}
//will print the assorted array
for(int i = 4; i >= 0; i--)
{
System.out.println((sortString(names[i])));
}
}
}
输出
tsronig
onigdc
zztro
vjaa
wvtsroolkfeca
预期产出:
zztro
wvtsroolkfeca
vjaa
tsronig
onigdc
很抱歉,我真的不知道该怎么办你已经接近解决方案了 无法对
sortString
中的字符串数组进行排序,因为它只能访问您传入的一个字符串。将数组排序代码移动到一个单独的方法,然后可以在将其传递给整个数组时调用它:
static String sortString(String str) {
char[] chArr = str.toCharArray();
String SortString = "";
// For sorting each individual strings character by character
for (int i = 0; i < chArr.length; i++) {
for (int j = 0; j < chArr.length; j++) {
if (chArr[i] > chArr[j]) {
char temp = chArr[i];
chArr[i] = chArr[j];
chArr[j] = temp;
}
}
}
//converting all of the character into a single string
for (int k = 0; k < chArr.length; k++) {
SortString = SortString + chArr[k];
}
return SortString;
}
static void sortArray(String[] OldArray) {
//sorting all of the strings in descending order
for (int i = 0; i< OldArray.length;i++)
{
for (int j = i+1; j< OldArray.length;j++)
{
if(OldArray[i].compareTo(OldArray[j]) > 0)
{
String temp = OldArray[i];
OldArray[i] = OldArray[j];
OldArray[j] = temp;
}
}
}
}
你非常接近解决方案 无法对
sortString
中的字符串数组进行排序,因为它只能访问您传入的一个字符串。将数组排序代码移动到一个单独的方法,然后可以在将其传递给整个数组时调用它:
static String sortString(String str) {
char[] chArr = str.toCharArray();
String SortString = "";
// For sorting each individual strings character by character
for (int i = 0; i < chArr.length; i++) {
for (int j = 0; j < chArr.length; j++) {
if (chArr[i] > chArr[j]) {
char temp = chArr[i];
chArr[i] = chArr[j];
chArr[j] = temp;
}
}
}
//converting all of the character into a single string
for (int k = 0; k < chArr.length; k++) {
SortString = SortString + chArr[k];
}
return SortString;
}
static void sortArray(String[] OldArray) {
//sorting all of the strings in descending order
for (int i = 0; i< OldArray.length;i++)
{
for (int j = i+1; j< OldArray.length;j++)
{
if(OldArray[i].compareTo(OldArray[j]) > 0)
{
String temp = OldArray[i];
OldArray[i] = OldArray[j];
OldArray[j] = temp;
}
}
}
}
刚刚对代码做了一些更改
sortString()
工作正常
仅对main()
方法进行了更改:
已获得预期输出,请尝试以下操作:
public static void main(String[] args)
{
Scanner UserInput = new Scanner (System.in);
String[] names = new String[5];
// will take a String user input from a user and store it in an arra
for (int counter = 0; counter<5; counter++)
{
do
{
System.out.print("Input String #" + (counter+1) + ": ") ;
names[counter] = UserInput.next().toLowerCase();
}while(names[counter].length() > 25);
}
//will print the assorted array
String[] namesReversed = new String[names.length];
for(int i=0;i<names.length;i++){
namesReversed[i]=sortString(names[i]);
}
Arrays.sort(namesReversed, String::compareToIgnoreCase);
for(int i = namesReversed.length-1; i>=0; i--)
{
System.out.println(namesReversed[i]);
}
}
publicstaticvoidmain(字符串[]args)
{
扫描仪用户输入=新扫描仪(System.in);
字符串[]名称=新字符串[5];
//将从用户获取字符串用户输入并将其存储在arra中
用于(整数计数器=0;计数器25);
}
//将打印组合数组
String[]namesReversed=新字符串[names.length];
对于(int i=0;i=0;i--)
{
System.out.println(名称反转[i]);
}
}
刚刚对代码做了一些更改sortString()
工作正常
仅对main()
方法进行了更改:
已获得预期输出,请尝试以下操作:
public static void main(String[] args)
{
Scanner UserInput = new Scanner (System.in);
String[] names = new String[5];
// will take a String user input from a user and store it in an arra
for (int counter = 0; counter<5; counter++)
{
do
{
System.out.print("Input String #" + (counter+1) + ": ") ;
names[counter] = UserInput.next().toLowerCase();
}while(names[counter].length() > 25);
}
//will print the assorted array
String[] namesReversed = new String[names.length];
for(int i=0;i<names.length;i++){
namesReversed[i]=sortString(names[i]);
}
Arrays.sort(namesReversed, String::compareToIgnoreCase);
for(int i = namesReversed.length-1; i>=0; i--)
{
System.out.println(namesReversed[i]);
}
}
publicstaticvoidmain(字符串[]args)
{
扫描仪用户输入=新扫描仪(System.in);
字符串[]名称=新字符串[5];
//将从用户获取字符串用户输入并将其存储在arra中
用于(整数计数器=0;计数器25);
}
//将打印组合数组
String[]namesReversed=新字符串[names.length];
对于(int i=0;i=0;i--)
{
System.out.println(名称反转[i]);
}
}
您的排序字符串函数似乎给出了正确的输出,但排序字符串数组函数在哪里?看看这个,它应该会为您指出相同函数的正确方向,我的导师告诉我们,排序字符串数组和排序字符串(逐字符)应该在单个函数中。一旦您签出它,如果您需要更多帮助,请告诉我,但是可以在该链接中找到按降序排序数组所需的所有内容。祝你好运提示:要从升序到降序,您可以将compareTo的返回值乘以某个负数。我们的排序字符串函数似乎给出了正确的输出,但排序字符串数组函数在哪里?请看一下,它应该为您指出同一函数的正确方向,我的指导老师告诉我们,字符串数组的排序和字符串的排序(字符对字符)应该在一个函数中完成。一旦您签出它,如果您需要更多帮助,请告诉我,但是可以在该链接中找到按降序排序数组所需的所有内容。祝你好运提示:要从升序到降序,可以将compareTo的返回值乘以某个负数