জাভাতে স্ট্যান্ডার্ড ইনপুট থেকে পূর্ণসংখ্যা মানটি কীভাবে পড়বেন


109

জাভাতে পূর্ণসংখ্যা পরিবর্তনশীল পড়ার জন্য আমি কোন শ্রেণিটি ব্যবহার করতে পারি?

উত্তর:


141

আপনি java.util.Scanner( API ) ব্যবহার করতে পারেন :

import java.util.Scanner;

//...

Scanner in = new Scanner(System.in);
int num = in.nextInt();

এটি নিয়মিত অভিব্যক্তি ইত্যাদির সাথেও ইনপুট টোকনাইজ করতে পারে ইত্যাদি The API এর উদাহরণ রয়েছে এবং এই সাইটে আরও অনেকগুলি রয়েছে (উদাহরণস্বরূপ , ভুল টাইপ প্রবেশ করার পরে আমি কীভাবে একটি স্ক্যানারকে ব্যতিক্রম ছোঁড়া থেকে রক্ষা করব? )।


1
আমি এটি আমার গ্রিপস আইডিতে কোনও সিনট্যাক্স ত্রুটি না করে চালানোর চেষ্টা করছি তবে যখন আমি পূর্ণসংখ্যার মানগুলি পড়ার চেষ্টা করি তখন এটি কনসোল আউটপুটে কিছুই দেখায় না। কেন এমন হয়?
rh979

@ পলিজেনেলব্রিকেন্টস: ইন.এনেক্সট ইন্ট () কেবলমাত্র পূর্ণসংখ্যার মান না হিসাবে অন্তর্গত মান গ্রহণ করবে
বেদ প্রকাশ

31

আপনি যদি জাভা 6 ব্যবহার করে থাকেন তবে কনসোল থেকে কোনও পূর্ণসংখ্যা পড়তে আপনি নিম্নলিখিত অনেলাইনারটি ব্যবহার করতে পারেন:

int n = Integer.parseInt(System.console().readLine());

17
আমি মন্তব্য করতে চাই যে বেশিরভাগ আইডিই এর অধীনে সিস্টেমে কনসোলটি বাতিল হয়ে যাবে যখন অ্যাপ্লিকেশনটি কোনও লঞ্চারের মাধ্যমে ডাবগ করা কঠিন হয়ে উঠবে। এটি আইডিইএ, এক্সলিপস এবং নেটবীনের ক্ষেত্রে সত্য বলে মনে হচ্ছে।
অ্যান্ড্রু হোয়াইট

1
যদি সে একটি স্ট্রিং প্রবেশ করে বা 'এন্টার' দেয় তবে এটি একটি নম্বর ফর্ম্যাট এক্সেক্সশন নিক্ষেপ করবে। সুতরাং স্ট্রিংটি পূর্ণসংখ্যায় পার্স করার আগে এটি নিয়ন্ত্রণ করা ভাল
ভ্যাসিল সুরডু

যদি সেই লাইনে একাধিক পূর্ণসংখ্যা থাকে তবে স্থান দ্বারা পৃথক করা যায়?
লস্টমোহিকান

@ লস্টমোহিকান, স্ক্যানার ব্যবহার করে হোয়াইট স্পেস ডিলিমেটেড টোকেন পড়ার উপায় রয়েছে।
মিসিংফ্যাক্টর

17

আমি এখানে স্ট্যান্ডার্ড ইনপুট থেকে পূর্ণসংখ্যা মান পড়ার জন্য 2 টি উদাহরণ সরবরাহ করছি

উদাহরণ 1

import java.util.Scanner;
public class Maxof2
{ 
  public static void main(String args[])
  {
       //taking value as command line argument.
        Scanner in = new Scanner(System.in); 
       System.out.printf("Enter i Value:  ");
       int i = in.nextInt();
       System.out.printf("Enter j Value:  ");
       int j = in.nextInt();
       if(i > j)
           System.out.println(i+"i is greater than "+j);
       else
           System.out.println(j+" is greater than "+i);
   }
 }

উদাহরণ 2

public class ReadandWritewhateveryoutype
{ 
  public static void main(String args[]) throws java.lang.Exception
  {
System.out.printf("This Program is used to Read and Write what ever you type \nType  quit  to Exit at any Moment\n\n");
    java.io.BufferedReader r = new java.io.BufferedReader (new java.io.InputStreamReader (System.in));
     String hi;
     while (!(hi=r.readLine()).startsWith("quit"))System.out.printf("\nYou have typed: %s \n",hi);
     }
 }

আমি প্রথম উদাহরণটি পছন্দ করি এটি সহজ এবং বেশ বোধগম্য।
আপনি এই ওয়েবসাইটটি অনলাইনে জাভা প্রোগ্রামগুলি সংকলন এবং পরিচালনা করতে পারেন: http://ideone.com


1
প্রাক্তন 2 ইনপুট স্ট্রিমটি প্রবর্তন করার সর্বোত্তম উপায় না হতে পারে ... অথবা আমি "সিস্টেমের ইনপুট অবজেক্টস" OOD, জাভা বা সেই বিষয়ে কোডিংয়ের জন্য নতুন কারও কাছে অনুমান করি all সমস্ত বর্ণনামূলক কোড এবং আপনি মূল বস্তুর নাম দিন " r ".... বুদ্ধিমান, তাই না? xD +1
ট্যাপার

1
উদাহরণ 1 ভুয়া ফর্ম্যাট ইনপুটগুলির বিরুদ্ধে সুরক্ষিত নয়
মার্টিন মিজার

11

এটি পরীক্ষা করুন:

public static void main(String[] args) {
    String input = null;
    int number = 0;
    try {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        input = bufferedReader.readLine();
        number = Integer.parseInt(input);
    } catch (NumberFormatException ex) {
       System.out.println("Not a number !");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

সংক্রামক পয়েন্ট কি NumberFormatExceptionএবং তারপর স্ট্যাক ট্রেস মুদ্রণ?
মিসিংফ্যাক্টর

6

উপরের দ্বিতীয় উত্তরটি সবচেয়ে সহজ একটি simple

int n = Integer.parseInt(System.console().readLine());

প্রশ্নটি "স্ট্যান্ডার্ড ইনপুট থেকে কীভাবে পড়বেন"।

একটি কনসোল হ'ল ডিভাইস যা সাধারণত কীবোর্ড এবং ডিসপ্লে সম্পর্কিত যা থেকে কোনও প্রোগ্রাম চালু হয় to

কোনও জাভা কনসোল ডিভাইস উপলব্ধ না থাকলে আপনি পরীক্ষা করতে ইচ্ছুক হতে পারেন, যেমন জাভা ভিএম কোনও কমান্ড লাইন থেকে শুরু হয়নি বা স্ট্যান্ডার্ড ইনপুট এবং আউটপুট স্ট্রিমগুলি পুনঃনির্দেশিত হয়েছে।

Console cons;
if ((cons = System.console()) == null) {
    System.err.println("Unable to obtain console");
    ...
}

কনসোল ব্যবহার করা সংখ্যার ইনপুট করার একটি সহজ উপায়। পার্সিয়ান্ট () / ডাবল () ইত্যাদির সাথে একত্রিত

s = cons.readLine("Enter a int: ");
int i = Integer.parseInt(s);    

s = cons.readLine("Enter a double: ");
double d = Double.parseDouble(s);

2
প্রশ্নের উত্তর না দেওয়ার জন্য -1। তিনি কোনও কনসোল থেকে পড়তে চান না, বরং মানক ইনপুট থেকে।
ইনগো

প্রশ্ন পরিষ্কারভাবে বলেছে যে তিনি কনসোল থেকে পড়তে চান না। যাইহোক কনসোল থেকে কীভাবে পড়তে হয় তার জন্য কিছু তথ্য দেওয়ার জন্য ধন্যবাদ।
শ্রীবাস্তব

4

এটি পরীক্ষা করুন:

import java.io.*;
public class UserInputInteger
{
        public static void main(String args[])throws IOException
        {
        InputStreamReader read = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(read);
        int number;
                System.out.println("Enter the number");
                number = Integer.parseInt(in.readLine());
    }
}

3

এটি মাথা ব্যাথার কারণ তাই আমি একটি সমাধান আপডেট করেছি যা ব্যবহারকারীদের জন্য ডিসেম্বর ২০১৪-তে উপলব্ধ সাধারণ হার্ডওয়্যার এবং সফ্টওয়্যার সরঞ্জামগুলি ব্যবহার করে চালানো হবে Please দয়া করে নোট করুন যে জেডিকে / এসডিকে / জেআরই / নেটবিয়ান এবং তার পরবর্তী ক্লাস, টেমপ্লেট লাইব্রেরি সংকলক, সম্পাদক এবং ডিবাগার্জ বিনামূল্যে।

এই প্রোগ্রামটি জাভা ভি 8 u25 দিয়ে পরীক্ষা করা হয়েছিল। এটি
নেটবিয়ান আইডিই ৮.০.২, জেডিকে ১.৮, ওএস উইন ৮.১ (ক্ষমা প্রার্থনা) এবং ব্রাউজারটি ক্রোম (ডাবল-ক্ষমা) ব্যবহার করে রচিত এবং নির্মিত হয়েছিল - আধুনিক জিইউআই-ওয়েব-ভিত্তিক ইউএনআইএক্স-সেমিডি-লাইন ওজি-র চুক্তিতে সহায়তা করার জন্য জেরো কাস্টে আইডিই - কারণ তথ্য (এবং আইডিই) সর্বদা নিখরচায় থাকা উচিত। টাপার 7 দ্বারা সকলের জন্যে.

কোড ব্লক:

    package modchk; //Netbeans requirement.
    import java.util.Scanner;
    //import java.io.*; is not needed Netbeans automatically includes it.           
    public class Modchk {
        public static void main(String[] args){
            int input1;
            int input2;

            //Explicity define the purpose of the .exe to user:
            System.out.println("Modchk by Tapper7. Tests IOStream and basic bool modulo fxn.\n"
            + "Commented and coded for C/C++ programmers new to Java\n");

            //create an object that reads integers:
            Scanner Cin = new Scanner(System.in); 

            //the following will throw() if you don't do you what it tells you or if 
            //int entered == ArrayIndex-out-of-bounds for your system. +-~2.1e9
            System.out.println("Enter an integer wiseguy: ");
            input1 = Cin.nextInt(); //this command emulates "cin >> input1;"

            //I test like Ernie Banks played hardball: "Let's play two!"
            System.out.println("Enter another integer...anyday now: ");
            input2 = Cin.nextInt(); 

            //debug the scanner and istream:
            System.out.println("the 1st N entered by the user was " + input1);
            System.out.println("the 2nd N entered by the user was " + input2);

            //"do maths" on vars to make sure they are of use to me:
            System.out.println("modchk for " + input1);
            if(2 % input1 == 0){
                System.out.print(input1 + " is even\n"); //<---same output effect as *.println
                }else{
                System.out.println(input1 + " is odd");
            }//endif input1

            //one mo' 'gain (as in istream dbg chk above)
            System.out.println("modchk for " + input2);
            if(2 % input2 == 0){
                System.out.print(input2 + " is even\n");
                }else{
                System.out.println(input2 + " is odd");
            }//endif input2
        }//end main
    }//end Modchk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.