1

我正在为我的 CS 课做一个程序。设置起来并不难,它做了它应该做的事情。不过我的问题是我希望它在同一行上获取所有输入而没有任何空白。该程序应该获取 ISBN 的前 9 位并找到第十位并打印它。我知道您可以通过将数字作为字符串然后对其进行解析来做到这一点(我相信?),这样您就可以获得单独的整数。虽然我不完全确定我上次尝试正确设置了 while 循环,但这样做会让我不得不完全更改我的代码,不是吗?这是问题所在:(业务:检查 ISBN-10)ISBN-10(国际标准书号)由 10 位数字组成:d1d2d3d4d5d6d7d8d9d10。最后一位数字 d10 是校验和,使用以下公式从其他九位数字计算得出:(d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9) % 11 如果校验和为10,则表示最后一位根据 ISBN-10 约定为 X。编写一个程序,提示用户输入前 9 位数字并显示 10 位数字 ISBN(包括前导零)。您的程序应该将输入读取为整数。无论哪种方式,这里的代码都没有循环输入带有空格的输入:

/* Class:        CS1301
* Section:       9:30
* Term:          Fall 2015
* Name:          Matthew Woolridge
* Instructor:    Mr. Robert Thorsen
* Assignment:    4
* Program:       1
* ProgramName:   ISBN_Number
* Purpose:       Prompts the user to enter the first nine numbers of an ISBN and calculates the tenth
* Operation:     The information to be numbers are statically instantiated in the code and
*                the table is output to the screen.
* Input(s):      The user inputs the first nine ISBN numbers
* Output(s):     The output will be the full the tenth ISBN number in the full number
* Methodology:   The program will use if statements and defined variables which use the user input variables to calculate the ISBN
* and return it to the user.
*
*/

import java.util.Scanner;
public class ISBN_Number
{

   public static void main (String[] args)
   {

     /******************************************************************************
      *                          Declarations Section                               *
      ******************************************************************************/
      /****************************CONSTANTS********************************/
      int [] ISBN = new int [8];
      int num1 = 0;
      int nextNum;
      int i; 
      int input=0;
      int num10=0;
      String fullIsbn;

      Scanner scan = new Scanner (System.in); //Scanner utility initialization

     /******************************************************************************
      *                             Inputs Section                                  *
      ******************************************************************************/

      System.out.print("Please input the first nine digits (between 0-9) of your ISBN not including the leading 0: ");
      for (i = 0; i<ISBN.length;i++)
      {
         nextNum = scan.nextInt(); // For loop that asks for an input until it fills the array of 8
         ISBN[i] = nextNum;
         ++input;
      }

     /****************************variables********************************/
      if (input == 8)
      {
       num10 = (ISBN[0] * 1 + ISBN[1] * 2 + ISBN[2] * 3 + ISBN[3] * 4 + ISBN[4] * 5 + ISBN[5] * 6 + ISBN[6] * 7 + ISBN[7] * 8 + ISBN[8] * 9) % 11; // Calculates the value of num10
      }
      else 
      {
       System.out.println("You did not input enough or input too many digits.");
      }

     /******************************************************************************
      *                             Processing Section                            *
      ******************************************************************************/

      if (num10 == 10)
      { 
         fullIsbn = num1 + ISBN[0] + "" + ISBN[1] + "" + ISBN[2] + "" + ISBN[3] + "" + ISBN[4] + "" + ISBN[5] + "" + ISBN[6] + "" + ISBN[7] + "" + ISBN[8] + "" + "X";
      }
      else  // Determines if num10 is equal to x or not and prints
      {
         fullIsbn = num1 + "" + ISBN[0] + "" + ISBN[1] + "" + ISBN[2] + "" + ISBN[3] + "" + ISBN[4] + "" + ISBN[5] + "" + ISBN[6] + "" + ISBN[7] + "" + ISBN[8] + "" + num10;
      }

      /******************************************************************************
       *                              Outputs Section                                *
       ******************************************************************************/

      System.out.print("The full ISBN number is " + fullIsbn); // Prints the full 10 digit isbn
   } // Rnds string
} // Ends program
4

1 回答 1

2

这是想法:

  1. 将用户输入作为整数数组的索引。
  2. 系统.out.print(yourArrayName[9]); //打印出数组的第10个数字

例如:

import java.util.Scanner;
public class Main
{

    public static void main (String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        int [] ISBN = new int [10];
        int input =0;

        System.out.print("Give me 10 numbers: ");

        for (int i = 0; i<ISBN.length;i++){
            int nextNumber = keyboard.nextInt();
            ISBN[i] = nextNumber;
            ++input;

            if (input==10){
                System.out.print("The tenth number you gave me is: "+ISBN[9]);
            }
        }

    } 
} 

您应该能够像这样应用上述策略来实现您的要求:

import java.util.*;
public class Main
{

    public static void main (String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        int [] ISBN = new int [10];
        int input =0;
        String fullIsbn;

        System.out.print("Give me 10 numbers: ");

        for (int i = 0; i<ISBN.length;i++){
            int nextNumber = keyboard.nextInt();
            ISBN[i] = nextNumber;
            ++input;

            if (input==10){
                ISBN[0]=0;
                ISBN[9] = (ISBN[0] * 1 + ISBN[1] * 2 + ISBN[2] * 3 + ISBN[3] * 4 + ISBN[4] * 5 + ISBN[5] * 6 + ISBN[6] * 7 + ISBN[7] * 8 + ISBN[8] * 9) % 11;
                if (ISBN[9] == 10)
                {

                    fullIsbn = ISBN[0] + "" + ISBN[1] + "" + ISBN[2] + "" + ISBN[3] + "" + ISBN[4] + "" + ISBN[5] + "" + ISBN[6] + "" + ISBN[7] + "" + ISBN[8] + "" + "X";
                }
                else  // Determines if num10 is equal to x or not and prints
                {
                    fullIsbn = ISBN[0] + "" + ISBN[1] + "" + ISBN[2] + "" + ISBN[3] + "" + ISBN[4] + "" + ISBN[5] + "" + ISBN[6] + "" + ISBN[7] + "" + ISBN[8] + "" + ISBN[9];

                }
                System.out.print("The tenth number you gave me is: "+fullIsbn);
            }
        }

    }
}
于 2015-09-20T02:55:13.877 回答