简体   繁体   English

只允许Java扫描器允许数字

[英]only allowing java scanner to allow numbers

I've been having issues catching non numbers. 我遇到了捕捉非数字的问题。

I tried try / catch but I can't grasp a hold of it. 我尝试了try / catch但无法掌握。 If anything I get it to catch non numbers, but doesn't let the user try entering again... It just stops my code completely. 如果有的话,我可以捕获非数字,但不允许用户再次输入...这完全停止了我的代码。

Here is my code: 这是我的代码:

package triangle;

import java.util.Scanner;

public class traingle {

public static void main(String[] args){ 
    //explaining what the program is going to do 
System.out.println("You will be able to enter 3 angles to equal the sum of a triangle,\nthis automated program will tell you if the angle you entered is issosoliese, eqilateral or scalene");
//creating input 1,2,3 for user

Scanner angle1 = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter angle degree number 1: ");
int n = angle1.nextInt();

Scanner angel2 = new Scanner(System.in);
System.out.println("Enter angle degree number 2: ");
int n2 = angel2.nextInt();

Scanner angel3 = new Scanner(System.in);
System.out.println("Enter angle degree number 3: ");
int n3 = angel3.nextInt();
//this is just telling how much degrees the user had in total if they didnt match up to triangle standards

This should get you started. 这应该使您入门。

package triangle;

import java.util.Scanner;

public class triangle {

    public static void main(String[] args){ 
         //explaining what the program is going to do 
        System.out.println("You will be able to enter 3 angles to equal the sum of a triangle,\n");
        System.out.println("this automated program will tell you if the angle you entered is isoceles, eqilateral or scalene");
        //creating input 1,2,3 for user

        Scanner s = new Scanner(System.in);  // Reading from System.in

        String line;
        int [] angles = new int [3];
        int count = 0;

        do {
            System.out.print("Enter angle degree number " + (count+1) + ": ");
            line = s.nextLine();
            while (true ) {
                try {
                    angles[count] = Integer.parseInt(line);
                    System.out.println("You entered " + angles[count]);
                    count++;
                    break;
                } catch (NumberFormatException e ) {
                    System.out.println("Invalid number: try again: ");
                    line = s.nextLine();
                }
            }
        } while (count < 3);


    }
}

You have a simple issue.. You just use one Scanner for the code in main method. 您有一个简单的问题。您只需在主方法中使用一个Scanner作为代码即可。

 package triangle;

 import java.util.Scanner;

 public class traingle {

 public static void main(String[] argc){
 System.out.println("You will be able to enter 3 angles to equal the sum of a triangle,\nthis automated program will tell you if the angle you entered is issosoliese, eqilateral or scalene");

 Scanner angle1 = new Scanner(System.in);  

 System.out.println("Enter angle degree number 1: ");

 int n = angle1.nextInt();

 System.out.println("Enter angle degree number 2: ");

int n2 = angel2.nextInt();

System.out.println("Enter angle degree number 3: ");

int n3 = angel3.nextInt();

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

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