5

ホーム チーム名、シーズン中の試合数を尋ね、次にループ内で次のチームの試合を尋ねる単純なバスケットボール プログラムを作成します。基本的に、do-while ループを開始すると、ユーザーが「オハイオ州」などと入力しない限り、うまく機能します。出力は、たとえば、「残り 6 ゲーム」から「残り 4 ゲーム」になります。通常は対戦相手に尋ねるだけで、1 ゲーム分減ります。

2 単語のバスケットボール チーム名が 2 回減らさないようにするにはどうすればよいですか?

import java.util.Scanner;

public class Basketball2 {


public static void main(String[] args) throws java.io.IOException {
    Scanner scanInput  = new Scanner(System.in);
    String sHomeTeam;
    String sAwayTeam;
    int iNumGames;
    int iGamesLeft = 0;

    System.out.println("Enter home team's name: ");
    sHomeTeam = scanInput.nextLine();
    System.out.println(sHomeTeam);

    System.out.println("How many games are in the home team's basketball season?");
    iNumGames = scanInput.nextInt();
    System.out.println(iNumGames);

    //start looping
    do {
        System.out.println("Enter opponent team's name: ");
        sAwayTeam = scanInput.next();
        System.out.println(sAwayTeam);
        iGamesLeft = --iNumGames;
        System.out.println("There are " + iGamesLeft + " games left in the basketball season");


    }//end do
    while(iGamesLeft > 0);
4

4 に答える 4

4

置換: sAwayTeam = scanInput.next();with sAwayTeam = scanInput.nextLine();2 回ループする理由は、scanInput.next();一度に 1 つのトークン (単語など) しか返さないためです。2 つの単語を入力すると、別の単語が返されるため、2 回目に続行する前にユーザーからさらに入力を受け取る必要はありません。したがって、二重ループ。

を呼び出すコード行にも注意する必要がありますnextInt()。これはnext()メソッドと同じように機能しますが、トークン (単語) の代わりに、1 文字だけを int としてスキャンします。これを試してください: after iNumGames = scanInput.nextInt();putscanInput.nextLine();これにより、スキップさせているもののscanInputがクリアされます。注: コードの記述方法により、これは 1 文字しか読み取れません。複数の文字を読み取る必要がある場合はnextLine()、その値を使用して整数に割り当てる必要があります。

于 2013-02-06T02:51:44.577 に答える
3

Donny Schrimsher の回答で言われていることはすべて正しいです。あなたがしなければならないのは、ホームチームのバスケットボールシーズンのゲーム数を取得した後です.

System.out.println("How many games are in the home team's basketball season?");
iNumGames = scanInput.nextInt();

追加する必要があります

scanInput.nextLine();

これは、ゲーム数を入力した後にエンター キー (行末) を押すと、nextInt() メソッドが行末ではなくゲーム数を取得するためです。この行末は、Donny Schrimsher が do-while ループで言及した nextLine() メソッドによって消費されます。SO これを回避するには、追加の nextLine() メソッドを追加します。

したがって、そうでなければなりません

System.out.println("How many games are in the home team's basketball season?");
iNumGames = scanInput.nextInt();
scanInput.nextLine();
System.out.println(iNumGames);

さらに、Donny Schrimsher によって言及された変更。

ありがとう

于 2013-02-06T04:04:45.610 に答える
1

すべての終了機能を備えた以下のコードも試してください。

import java.util.Scanner;

public class Basketball2 {

    public static void main(String[] args) throws java.io.IOException {
        Scanner scanInput = new Scanner(System.in);
        String sHomeTeam;
        String sAwayTeam;
        int iNumGames;
        int iGamesLeft = 0;

        System.out.println("Enter home team's name: ");
        sHomeTeam = scanInput.nextLine();
        System.out.println(sHomeTeam);

        System.out
                .println("How many games are in the home team's basketball season?");
        iNumGames = scanInput.nextInt();
        System.out.println(iNumGames);

        // start looping
        do {
            System.out.println("Enter opponent team's name: ");
            scanInput = new Scanner(System.in);
            sAwayTeam = scanInput.nextLine();
            if(!"".equals(sAwayTeam.trim()) && !"exit".equals(sAwayTeam.trim()))
            {

                System.out.println(sAwayTeam);
                iGamesLeft = --iNumGames;
                System.out.println("There are " + iGamesLeft+ " games left in the basketball season");

            }

        }// end do
        while (iGamesLeft > 0 && !"exit".equalsIgnoreCase(sAwayTeam));
    }
}
于 2013-02-06T04:20:30.293 に答える
0

件名: Scanner を使用した「Java ループ」

私が書いた単純な Java プログラムは完璧に動作します。自分で試すことができます...また、このプログラムを「while ループ」、「do - while ループ」、「for - each ループ」に簡単に変換することもできます。

Rafiq、バージニア州、米国、日付: 2015 年 4 月 17 日

//Examples: 'for loop' with Scanner
package com.java_basics;

import java.util.Scanner;

public class ForLoop_Examples_With_Scanner 
{
    public static void main(String[] args) 
    {
        //Creating instance of Scanner to allows a user's input to read from System.in
        Scanner mySC = new Scanner(System.in);
        System.out.println("Please, enter the value of 'int i' between '0 and 2' : ");
        int i = mySC.nextInt();

        System.out.println("Please, enter the value of 'exitPoint' between '10 and 1000' :");
        int exitPoint = mySC.nextInt();

        System.out.println("Please, enter the value of 'increment' between '1 and 2' :");
        int increment = mySC.nextInt();

        mySC.close();//Releasing memory to the OS (Operating System) for reuse

        System.out.println("Output:\n" + "======");
        for(;i<exitPoint ; i=i+increment)//i++==>i=i+1==>i=i+increment
        {
            System.out.println(i);          
        }
    }
}
于 2015-04-17T17:55:42.870 に答える