1

このプログラムは、int配列が 10 までカウントする必要がない場合に機能します。私の問題は、charat10 を 2 つの異なる文字として読み取ることです。10 の例外を作成するにはどうすればよいですか? たとえば、以下のプログラムでは、5 人を入力すると、プログラムは 6-1 から出力します。1 は 10 の最初の文字から読み取られるためです。6 を入力するとcharat、0 が読み取られるため、出力されます。 6-0。

package javaapplication2;

import java.util.*;

public class JavaApplication2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the amount of people in your group, up to 6");
        int num = input.nextInt();

        if (num > 6) {
            System.out.println("You have exceeded the maximum amount of people allowed.");
        }

        int highest = num - 1;
        String available = "";
        String booking = " ";
        int[] RowA = {0, 0, 1, 1, 1, 0, 0, 0, 0, 0};

        for (int i = 0; i < RowA.length; i++) {
            if (RowA[i] == 0) {
                available = available + (i + 1);
            }
            if (available.length() > booking.length()) {
                booking = available;
                System.out.println(booking);
            } else if (RowA[i] == 1) {
                available = "";
            }
        }


        if (num <= booking.length()) {
            char low = booking.charAt(0);
            char high = booking.charAt(highest);
            System.out.println("There are seats from " + low + " - " + high + ".");
        } else {
            System.out.println("The desired seat amount is not available. The maximum amount on Row is " + booking.length());
        }
    }
}
4

2 に答える 2

1

入力文字列を使用している場合:

予約は文字列であるため、部分文字列を使用して low と high の値を整数にキャプチャする方が便利です。たとえば、次のようにします。

if (num <= booking.length()) {
    int lineIndex = booking.indexOf("-");
    if (lineIndex < 0)
        lineIndex = booking.indexOf("/");

    int low = Integer.parseInt(booking.substring(0, lineIndex);
    int high = Integer.parseInt(booking.substring(lineIndex+1, booking.length());
}

System.out.println() は、現在の形式で正しい整数を解析します。追加のチェックは、「-」以外の区切り記号を使用している場合に備えています。

于 2013-02-03T21:32:47.100 に答える
0

つまり、あなたがしているのは、PrimitiveObsessionと呼ばれるコードの臭いです。代わりに、コレクションや配列などのより複雑なデータ型を使用する必要がある文字列を使用しています。

import java.util.*;

public class JavaApplication2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the amount of people in your group, up to 6");
        int num = input.nextInt();

        if (num > 6) {
            System.out.println("You have exceeded the maximum amount of people allowed.");
        }

        int highest = num - 1;
        ArrayList<Integer> available = new ArrayList<Integer>();
        Integer[] booking = new Integer[0];
        int[] RowA = {0, 0, 1, 1, 1, 0, 0, 0, 0, 0};

        for (int i = 0; i < RowA.length; i++) {
            if (RowA[i] == 0) {
                available.add(i + 1);
            }
            if (available.size() > booking.length) {
                booking = available.toArray(booking);
                System.out.println(Arrays.toString(booking));
            } else if (RowA[i] == 1) {
                available.clear();
            }
        }


        if (num <= booking.length) {
            int low = booking[0];
            int high = booking[highest];
            System.out.println("There are seats from " + low + " - " + high + ".");
        } else {
            System.out.println("The desired seat amount is not available. The maximum amount on Row is " + booking.length);
        }
    }
}

charAtコレクションと配列を使用すると、実際に操作intしてタイプするため、小数点以下の桁数を気にする必要がなくなります。Integerこれにより、小数点以下が独自に追跡されます。

于 2013-02-03T21:48:32.233 に答える