- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在打开和读取一个简单的 input.txt 文件到我在计算机科学类(class)之一中创建的 Java 程序时遇到了一些问题(该程序的基本前提是从文件中获取彩票数据,例如玩家姓名及其彩票号码,并将其与作为输入提供的用户号码进行比较)。首先,当我编译并尝试运行该程序(Eclipse IDE)时,它看不到 input.txt 文件,即使它位于同一目录中。我必须在命令行中输入“src/Assignment1/input.txt”才能正确找到该文件。我查看了 Java 的 Path 实用程序,看看是否可以解决该问题,但不确定如何实现该代码或是否有更简单的方法。
此外,当程序找到该文件时,我的 readFile 方法将文本文件中的第一个数字作为售出的门票数量,然后创建一个链接列表来保存每个人的数据。我在 readFile 方法的第二个嵌套 for 循环中遇到编译错误,如下所示:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type lottery is accessible. Must qualify the allocation with an enclosing instance of type lottery (e.g. x.new A() where x is an instance of lottery).
at Assignment1.lottery.readFile(lottery.java:89)
at Assignment1.lottery.main(lottery.java:214)
我提供了下面 input.txt 中内容的副本以及我的代码,如有任何指导,我们将不胜感激!
5
卢埃林马克
1 15 19 26 33 46
年轻的布莱恩
17 19 33 34 46 47
古哈奥雅纳
1 4 9 16 25 36
萧麦克
17 19 34 46 47 48
巴尔奇穆拉特
5 10 17 19 34 47
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
public class lottery {
// Enumeration method that holds constants for how many matches correlate to how much in winnings
public enum PayOut
{
MATCHTHREE(10), MATCHFOUR(100), MATCHFIVE(10000), MATCHSIX(1000000);
private int winnings;
public int getval()
{
return winnings;
}
private PayOut(int amount)
{
this.winnings = amount;
}
}
// Method call to create linked list with purchaser's data in each node
static LinkedList<PurchaserList> purchasers = new LinkedList<>();
// Data structure for purchaser information, contained in each node in linked list
public class PurchaserList
{
public String lastName;
public String firstName;
public int[] numbers;
public PurchaserList (String last, String first, int[] nums)
{
lastName = last;
firstName = first;
numbers = nums;
}
public String getLastName()
{
return lastName;
}
public String getFirstName()
{
return firstName;
}
public int[] getNumbers()
{
return numbers;
}
}
// Method to open and read in data from input file
public static void readFile (String file) throws IOException
{
File fileName = new File(file);
try
{
Scanner in = new Scanner(fileName);
int numTickets = in.nextInt();
for(int i = 0; i < numTickets; i++)
{
String lastName = in.next();
String firstName = in.next();
int[] numbers = new int[6];
for(int j = 0; j < 6; j++)
{
numbers[j] = in.nextInt();
}
PurchaserList current = new PurchaserList(lastName, firstName, numbers);
purchasers.add(i, current);
}
in.close();
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
}
public static void compareNumbers(int[] winningNumbers)
{
// Creates array to hold winning numbers
List<Integer> winningNums = new ArrayList<>(); //creates a list to store all the winning numbers
// For loop to store winning numbers in prior array
for(int num : winningNumbers)
{
winningNums.add(num);
}
//For loop to go through each purchaser in the linked list and get their lottery numbers
for (PurchaserList purchaser : purchasers)
{
// Generating list that stores all the numbers from the current purchaser
List<Integer> playerNums = new ArrayList<>();
// For loop to add numbers to the list
for(int num : purchaser.getNumbers())
{
playerNums.add(num);
}
//Converts list in to a set
Set<Integer> similar = new HashSet<>(playerNums);
//Compares set of winning numbers to purchaser's numbers, keeps similar values
similar.retainAll(winningNums);
//Calls enum method to look for winning amount based on the numbers matched, returns enumeration
PayOut matchesFound = matches(similar.size());
//Only display winnings if matches are 3 or greater
if(matchesFound != null)
{
displayPrices(matchesFound, purchaser.getFirstName(), purchaser.getLastName(), similar.size());
}
}
}
public static PayOut matches(int num)
{
PayOut numMatches;
if(num == 3)
{
numMatches = PayOut.MATCHTHREE;
}
else if(num == 4)
{
numMatches = PayOut.MATCHFOUR;
}
else if(num == 5)
{
numMatches = PayOut.MATCHFIVE;
}
else if(num == 6)
{
numMatches = PayOut.MATCHSIX;
}
else
{
return null;
}
return numMatches;
}
private static void displayPrices(PayOut numMatches, String first, String last, int matches)
{
switch(numMatches)
{
case MATCHTHREE:
System.out.printf("%n%s %s matched %d numbers and won $%d. %n", first, last, matches, PayOut.MATCHTHREE.getval());
break;
case MATCHFOUR:
System.out.printf("%n%s %s matched %d numbers and won $%d. %n", first, last, matches, PayOut.MATCHFOUR.getval());
break;
case MATCHFIVE:
System.out.printf("%n%s %s matched %d numbers and won $%d.%n", first, last, matches, PayOut.MATCHFIVE.getval());
break;
case MATCHSIX:
System.out.printf("%n%s %s matched %d numbers and won $%d. %n", first, last, matches, PayOut.MATCHSIX.getval());
break;
default:
System.out.println("None of the players matched any numbers %n");
break;
}
}
// Main method
public static void main(String[] args) throws IOException
{
Scanner scan = new Scanner(System.in);
// Asking user for input file
System.out.println("Enter the name of the file with the ticket data: ");
String fileName = scan.nextLine();
//Method call to open and read in data from input file
readFile(fileName);
// Creates array to store winning lottery numbers
int[] winningNumbers = new int[6];
// Asking user for winning lottery numbers, in ascending order
System.out.println("Enter the winning Lottery numbers (in ascending order separated by spaces): ");
// For loop to scan in winning lottery numbers to array
for(int i = 0; i < 6; i++)
{
winningNumbers[i] = scan.nextInt();
}
//Method call to compare winning numbers to purchaser's numbers
compareNumbers(winningNumbers);
// Close input file
scan.close();
}
}
最佳答案
PurchaserList
类不是静态的。因此,必须像 lotteryInstance.new PurchaserList()
一样访问它(因为它不是静态的,因此它属于 Lottery 实例)。
因此,将 PurchaserList
设为静态应该可以解决此问题。
关于Java 程序读取文本文件并将其与用户输入进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383177/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!