0

バブル ソート法を使用して、入力数値を順番に (最小から最大へ) 並べ替えます。次に、次の方法(番号を順番に並べる必要がある場合)では、前の方法で番号を並べ替えたことを無視しているようです。メソッドを正しく呼び出していませんか?ありがとう!

import java.util.Scanner;
public class hw6 {
public static int getOrder(int n1, int n2, int n3, int n4, int n5) {
    Scanner in = new Scanner(System.in);

    if (n1>n2){
        int t = n1;
        n1 = n2;
        n2 =t;
    }
    if (n2>n3){
        int t = n2;
        n2 = n3;
        n3 =t;
    }
    if (n3>n4){
        int t = n3;
        n3 = n4;
        n4 =t;
    }
    if (n4>n5){
        int t = n4;
        n4 = n5;
        n5 =t;
    }
    if (n1>n2){
        int t = n1;
        n1 = n2;
        n2 =t;
    }
    if (n2>n3){
        int t = n2;
        n2 = n3;
        n3 =t;
    }
    if (n3>n4){
        int t = n3;
        n3 = n4;
        n4 =t;
    }
    if (n1>n2){
        int t = n1;
        n1 = n2;
        n2 =t;
    }
    if (n2>n3){
        int t = n2;
        n2 = n3;
        n3 =t;
    }
    if (n1>n2){
        int t = n1;
        n1 = n2;
        n2 =t;
    }
    System.out.println(n1+" "+n2+" "+n3+" "+n4+" "+n5);

    return n1+n2+n3+n4+n5;//cards now in order from least to greatest
 }
 public static int getRank(int n1, int n2, int n3, int n4, int n5) {
 int order;
 int rank = 1;
 order = getOrder(n1, n2, n3, n4, n5);

 if (n1 == n2 && n1 == n3 && n1 == n4 || 
     n2 == n3 && n2 == n4 && n2 == n5)
     System.out.println("Four of a kind");
 else if (n1 == n2 && n1 == n3 && n4 == n5 ||
          n1 == n2 && n3 == n4 && n3 == n5)
     System.out.println("Full house");
 else if (n2 == n1+1 && n3 == n2+1 && n4 == n3+1 && n5 == n4+1)
     System.out.println("Straight");
 else if (n1 == n2 && n1 == n3 || n2 == n3 && n2 == n4 ||
          n3 == n4 && n3 == n5)
     System.out.println("Three of a kind");
 else
     System.out.println("A high card");

 return rank;
 }       
 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n1, n2, n3, n4, n5; //input 
    int order;
    int rank;

    System.out.print("Enter  (1-13):");
    n1 = in.nextInt();
    System.out.print("Enter  (1-13):");
    n2 = in.nextInt();
    System.out.print("Enter  (1-13):");
    n3 = in.nextInt();
    System.out.print("Enter  (1-13):");
    n4 = in.nextInt();
    System.out.print("Enter  (1-13):");
    n5 = in.nextInt();

    order = getOrder(n1, n2, n3, n4, n5);
    rank = getRank(n1, n2, n3, n4, n5);
}

}

4

1 に答える 1

2

Java は値渡しなので、getOrderメソッドは値のコピーを受け取ります。ローカル コピーは変更されますが、元の変数は変更されmainません。

変更を永続化するには、値を格納する配列または を作成しArrayListます。次に、それをメソッドに渡して、それらの値を変更します。メソッドは配列またはオブジェクトへの参照のコピーを受け取るArrayListため、変更はオブジェクトに保持されます。

于 2013-10-09T22:53:56.260 に答える