2017-02-13 7 views
-4

Новичок здесь, я делаю программу, которая производит случайное порядковое число с соответствующим суффиксом
(I.E. 1st, 2nd, 3rd ...) Я не могу получить randomInt(); работать. Я получаю следующие ошибки:Случайная ошибка целого числа в Java

.\Random.java:6: error: class RandomInteger is public, should be declared in a 
file named RandomInteger.java 
public final class RandomInteger { 
      ^ 
RandomNumSuffix.java:8: error: cannot access Random 
    Random rand = new Random(); 
    ^ 
    bad source file: .\Random.java 
    file does not contain class Random 
    Please remove or make sure it appears in the correct subdirectory of the 
sourcepath. 

Я искал в Google, и переполнение стека, чтобы найти решение, но безрезультатно. Я даже скопировал
и скомпилировал другие программы из Интернета, которые используют randomInt(); и все они производят ту же ошибку. Можете ли вы сказать мне, что я делаю неправильно? Вот код моей программы:

import java.util.*; 

class RandNumSuffix 
{ 
    public static void main(String [] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     Random rand = new Random(); 
     String numSuffix = ""; 
     String answer = ""; 
     String repeat = ""; 
     int x; 

     while(repeat.equalsIgnoreCase("yes")||repeat.equalsIgnoreCase("y")) 
     { 
      x = rand.nextInt(1000000)+1; 
      if (x == 1) 
      { 
       numSuffix = "st"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x == 2) 
      { 
       numSuffix = "nd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x == 3) 
      { 
       numSuffix = "rd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x > 20 && x < 101 && x%10==1) 
      { 
       numSuffix = "st"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x > 20 && x < 101 && x%10==2) 
      { 
       numSuffix = "nd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x > 20 && x < 101 && x%10==3) 
      { 
       numSuffix = "rd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x>100 && x%10==1 && x%100!=11) 
      { 
       numSuffix = "st"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x>100 && x%10==2 && x%100!=12) 
      { 
       numSuffix = "nd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      if (x>100 && x%10==3 && x%100!=13) 
      { 
       numSuffix = "rd"; 
       answer = x + numSuffix + ", "; 
       System.out.print(answer); 
      } 
      else 
      { 
       if (answer == "") 
       { 
        numSuffix = "th"; 
        System.out.print(x + numSuffix + ", "); 
       } 
      } 


     answer = ""; 
     System.out.println("Would you like to generate another number?"); 
     answer = scan.nextLine(); 
     } 
    } 
} 

Также критика в моей программе приветствуется. Благодарю.

+2

* ошибка: класс RandomInteger является общедоступным, должен быть объявлен в файле с именем RandomInteger.java * Это говорит все. Имя файла и имя открытого класса должны совпадать с –

+1

Слишком много непоследовательности в вашем вопросе: файл Random.java, класс RandomInteger, но исходный код кода относится к классу RandNumSuffix? Пожалуйста, уделите время, чтобы очистить все правильно ... –

ответ

2

Ваш файл Random.java должен называться RandomInteger.java. Переименуйте файл и повторите попытку компиляции. Он должен работать нормально.

Когда вы объявляете класс как public class XYZ, имя файла, содержащего этот код, ДОЛЖНО называться XYZ.java.


Надеюсь, это поможет!

+0

У меня нет файла random.java, может быть, это моя проблема. Я думал, что Random является частью пакета java.util. Означает ли это, что каждый раз, когда я хочу создать случайное число, мне нужно создать для него класс? – Turbowagon

+0

Нет. Это не нужно. – anacron