在数组中按字母顺序排序字符串。 Java的

时间:2016-06-05 14:28:46

标签: java arrays sorting

我必须为学校项目排序数组中的字符串。我们的老师不允许我们使用array,sort()。 我必须使用2种排序方法,但它们不能很好地工作。

第一个返回每个值的两倍。即约翰,杰克,亚当,汤姆将返回亚当,亚当,杰克,杰克,约翰,约翰,汤姆,汤姆。

public static void sort() {
        inputFileNames();//inputs list of names from a file.
        for (int i = 0; i < size - 1; i++) {
            for (int j = i + 1; j < size; j++) {
                if (stArr[i].compareTo(stArr[j])>0) {
                    temp = stArr[i];
                    stArr[i] = stArr[j];
                    stArr[j] = temp;
                }
            }
        }
        display("The names are: ");// method to display array 
        System.out.println("");
    }

第二种不是&#39;运行:

public static void bubbleSort() {
        inputFileNames();
        for (int i = size - 1; i >= 0; i--) {
            for (int j = 0; j <= i; j++) {
                if (stArr[j].compareTo(stArr[j+1])>0) {
                    temp = stArr[j];
                    stArr[j] = stArr[j + 1];
                    stArr[j + 1] = temp;
                }
            }
        }
        display("The names are: ");
        System.out.println("");
    }

输入和显示:

static void display(String heading) {
    System.out.println(heading + "\n");
    for (int i = 0; i < size; i++) {
        System.out.println(stArr[i]);
    }
}

static void inputFileNames() {
    try {
        Scanner scFile = new Scanner(new File("Names.txt"));
        while (scFile.hasNext()) {
            stArr[size] = scFile.nextLine();
            size++;
        }
    } catch (FileNotFoundException ex) {
        System.out.println("File not found.");
    }
}

1 个答案:

答案 0 :(得分:1)

DigitNumber = input ("Enter 7 different digit: ")
length=len(DigitNumber)
while length != 7:
       print("Please type 7 digit codes.")
       DN= input ("Enter 7 different digit: ")
if(length==7):
  GTIN1=int(DigitNumber[0])
  GTIN2=int(DigitNumber[1])
  GTIN3=int(DigitNumber[2])
  GTIN4=int(DigitNumber[3])
  GTIN5=int(DigitNumber[4])
  GTIN6=int(DigitNumber[5])
  GTIN7=int(DigitNumber[6])
TOTALGTIN=int(GTIN1*3+GTIN2+GTIN3*3+GTIN4+GTIN5*3+GTIN6+GTIN7*3)
roundingup=round(TOTALGTIN, -1)
GTIN8 = int(roundingup - TOTALGTIN) % 10
print("The full valid 8-Digit GTIN-8 code is: "+str(DigitNumber)+str(GTIN8)

yes = set(['yes','y', 'ye'])
no = set(['no','n'])

choice = input("Would you like to validate your 8-digit GTIN-8code?")
if choice in yes:
  Validate = input("Enter your 8 digit GTIN-8 number: ")
  GTIN1=int(DigitNumber[0])
  GTIN2=int(DigitNumber[1])
  GTIN3=int(DigitNumber[2])
  GTIN4=int(DigitNumber[3])
  GTIN5=int(DigitNumber[4])
  GTIN6=int(DigitNumber[5])
  GTIN7=int(DigitNumber[6])
  GTIN8=int(DigitNumber[7])
  Validifying=int(GTIN1*3+GTIN2+GTIN3*3+GTIN4+GTIN5*3+GTIN6+GTIN7*3+GTIN8)
  Check=Validifying%10
  if(Validifying/10.).is_integer():
     print("Your code is valid")    
  else:
     print("Your 8 digit GTIN code is invalid.")
elif choice in no:
  print ("Ok, thank you.")
  exit(1)
else:
  sys.stdout.write("Please respond with 'yes' or 'no'")

这是第一个代码的答案。我不擅长文件处理,所以你必须使用你的输入法。我知道Scanner这就是我在这里使用的原因。

在你的第二个例子中你的j循环是错误的(j = 0; j&lt; = i-1; j ++)。如果您的问题得到解决,请将其标记为答案