简体   繁体   English

如何在同一行上获得多个输入而没有空白

[英]How to get multiple inputs on the same line without white space

I am doing a program for my CS class. 我正在为我的CS课编写程序。 It wasn't hard to setup and it does what it is supposed to. 设置起来并不难,它可以完成预期的工作。 My problem though is that I want it to take all the inputs on the same line without any white space. 但是我的问题是我希望它在同一行上接受所有输入而没有任何空格。 The program is supposed to take the first 9 digits of an ISBN and find the tenth and print it. 该程序应采用ISBN的前9位数字并找到第十位并打印出来。 I know you can do this by taking the numbers as a string and then parsing it (I believe?) so you can get the separate ints. 我知道您可以通过将数字作为字符串然后解析(我相信吗?)来做到这一点,以便获得单独的整数。 Although I am not entirely sure I set up the while loop properly last time I tried and doing so would make me have to change my code entirely no? 尽管我不能完全确定我上次尝试正确设置了while循环,但这样做会使我不得不完全更改代码吗? Here is the problem: (Business: check ISBN-10) An ISBN-10 (International Standard Book Number) consists of 10 digits: d1d2d3d4d5d6d7d8d9d10. 问题出在这里:(业务:检查ISBN-10)ISBN-10(国际标准书号)由10位数字组成:d1d2d3d4d5d6d7d8d9d10。 The last digit, d10, is a checksum, which is calculated from the other nine digits using the following formula: (d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9) % 11 If the checksum is 10, the last digit is denoted as X according to the ISBN-10 convention. 最后一个数字d10是校验和,它是使用以下公式从其他九个数字计算得出的:(d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9)%11如果校验和为10,则根据ISBN-10约定,最后一位表示为X。 Write a program that prompts the user to enter the first 9 digits and displays the 10-digit ISBN (including leading zeros). 编写一个程序,提示用户输入前9位数字并显示10位ISBN(包括前导零)。 Your program should read the input as an integer. 您的程序应将输入读取为整数。 Either way here is the code without the loop taking in the inputs with the white space: 无论哪种方式,代码都是没有循环的空白输入:

/* 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

Here is the idea: 这里是想法:

  1. Take the user input as an index of an array of ints. 将用户输入作为int数组的索引。
  2. Sytem.out.print(yourArrayName[9]); Sytem.out.print(yourArrayName [9]); //print out the 10th number of the array //打印出数组的第十个数字

For example: 例如:

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]);
            }
        }

    } 
} 

You should be able to apply the above strategy like so to achieve what you are asking: 您应该能够应用上述策略,从而实现您所要求的:

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);
            }
        }

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM